Flexbox 是 CSS 中一個強大的佈局模型,它提供了一個靈活且易於使用的方式來排列和對齊網頁元素。無論是建立響應式佈局、對齊項目、分配空間,Flexbox 都能輕鬆應對。
1. 基本 Flexbox 容器和項目
首先,我們需要將一個 HTML 元素指定為 Flex 容器。這可以使用 display: flex
屬性來完成。容器內的任何子元素都會自動變成 Flex 項目。
<div class="container">
<div class="item">項目 1</div>
<div class="item">項目 2</div>
<div class="item">項目 3</div>
</div>
.container {
display: flex;
width: 300px;
border: 1px solid black;
}
.item {
width: 100px;
height: 50px;
background-color: lightblue;
margin: 5px;
}
在這個範例中,.container
元素被指定為 Flex 容器,而三個 .item
元素則被自動視為 Flex 項目。每個項目都具有設定的寬度和高度,並帶有背景顏色和間距。
2. 主軸對齊
Flexbox 允許我們根據 flex-direction
屬性來控制項目在主軸上的排列方向。默認情況下,主軸為水平方向,項目從左到右排列。
.container {
/* 默認主軸方向為水平 */
flex-direction: row; /* 默認值 */
}
.container {
/* 將主軸方向改為垂直 */
flex-direction: column;
}
3. 副軸對齊
除了主軸對齊,我們也可以使用 align-items
屬性來控制 Flex 項目在副軸上的對齊方式。默認情況下,副軸對齊方式為 stretch
,項目會填滿整個容器高度。
.container {
/* 默認副軸對齊方式為伸展 */
align-items: stretch; /* 默認值 */
}
.container {
/* 將副軸對齊方式改為頂部 */
align-items: flex-start;
}
.container {
/* 將副軸對齊方式改為底部 */
align-items: flex-end;
}
.container {
/* 將副軸對齊方式改為居中 */
align-items: center;
}
4. 項目對齊
justify-content
屬性允許我們控制 Flex 項目在主軸上的對齊方式。默認情況下,項目會根據 flex-direction
的值排列在主軸的開始或結束位置。
.container {
/* 默認主軸對齊方式為開始位置 */
justify-content: flex-start; /* 默認值 */
}
.container {
/* 將主軸對齊方式改為結束位置 */
justify-content: flex-end;
}
.container {
/* 將主軸對齊方式改為居中 */
justify-content: center;
}
.container {
/* 將主軸對齊方式改為項目之間平均分佈 */
justify-content: space-between;
}
.container {
/* 將主軸對齊方式改為項目之間平均分佈,並在兩端留出空間 */
justify-content: space-around;
}
5. Flex 項目屬性
Flex 項目也擁有一些屬性可以控制它們在 Flex 容器中的佈局和對齊方式。
flex-grow
: 控制 Flex 項目在容器中擴展的比例。默認值為 0,表示項目不會擴展。flex-shrink
: 控制 Flex 項目在容器中縮小的比例。默認值為 1,表示項目會縮小以適應容器。flex-basis
: 指定 Flex 項目在容器中佔用的空間。默認值為auto
,表示項目根據其內容大小佔用空間。order
: 控制 Flex 項目在容器中排列的順序。默認值為 0,表示項目按照其在 HTML 中的順序排列。
6. 響應式佈局
Flexbox 可以輕鬆建立響應式佈局。例如,我們可以根據螢幕大小調整 Flex 項目的排列方式和對齊方式。
@media (max-width: 768px) {
.container {
flex-direction: column;
}
.item {
width: 100%;
}
}
結論
Flexbox 提供了一個功能強大且易於使用的佈局模型,可以輕鬆地控制網頁元素的排列和對齊方式。通過使用 Flexbox,我們可以建立響應式佈局、對齊項目、分配空間,並打造更具吸引力的網頁設計。