Thuộc tính flex-direction xác định hướng của trục chính (main axis), quyết định flex items được xếp theo hàng ngang hay cột dọc.
Các giá trị
| Giá trị | Trục chính | Thứ tự |
|---|---|---|
row (mặc định) | Ngang (← →) | Trái sang phải |
row-reverse | Ngang (← →) | Phải sang trái |
column | Dọc (↑ ↓) | Trên xuống dưới |
column-reverse | Dọc (↑ ↓) | Dưới lên trên |
Ví dụ: flex-direction: column (Xếp dọc)
<!DOCTYPE html>
<html>
<head>
<style>
.mycontainer {
display: flex;
flex-direction: column;
background-color: #e67e22;
padding: 10px;
gap: 10px;
}
.mycontainer > div {
background-color: white;
text-align: center;
line-height: 40px;
font-size: 25px;
width: 100px;
margin: 5px auto;
border-radius: 4px;
}
</style>
</head>
<body>
<h1>Quiz</h1>
<div class="mycontainer">
<div>Q1</div>
<div>Q2</div>
<div>Q3</div>
<div>Q4</div>
<div>Q5</div>
<div>Q6</div>
</div>
</body>
</html>
Ảnh hưởng đến các thuộc tính khác
Khi thay đổi flex-direction, các trục thay đổi:
| flex-direction | Main Axis | Cross Axis | justify-content | align-items |
|---|---|---|---|---|
| row | Ngang | Dọc | Căn ngang | Căn dọc |
| column | Dọc | Ngang | Căn dọc | Căn ngang |
Responsive: Column trên mobile, Row trên desktop
.card-container {
display: flex;
flex-direction: column;
gap: 1rem;
}
@media (min-width: 768px) {
.card-container {
flex-direction: row;
flex-wrap: wrap;
}
.card-container > * {
flex: 1 1 300px;
}
}
Shorthand: flex-flow
.container {
flex-flow: column wrap; /* flex-direction + flex-wrap */
}