這些布局方法都是網站制作過程中常用的技術,也是目前前端布局的絕對主流和首選方案。
1. Flexbox(彈性盒子布局)
設計初衷:為一維布局(沿直線或曲線排布)提供更高效、靈活的方式。非常適合組件、導航欄等線性結構的布局。
核心概念:
容器常用屬性:
-
flex-direction:定義主軸方向(row | row-reverse | column | column-reverse)。
-
justify-content:定義項目在主軸上的對齊方式(flex-start | flex-end | center | space-between | space-around | space-evenly)。
-
align-items:定義項目在交叉軸上的對齊方式(stretch | flex-start | flex-end | center | baseline)。
-
flex-wrap:定義是否換行(nowrap | wrap | wrap-reverse)。
項目常用屬性:
.container {
display: flex;
justify-content: center;
align-items: center;
height: 300px;}
.item { flex: 1; }
2. CSS Grid(網格布局)
設計初衷:為二維布局(同時定義行和列)而設計。非常適合整個頁面的宏觀布局,如雜志、儀表盤等復雜結構。
核心概念:
容器常用屬性:
-
grid-template-columns / grid-template-rows:定義列和行的尺寸。
-
grid-template-areas:通過命名區(qū)域來定義布局模板。
-
gap(或 grid-gap):設置網格項之間的間距。
-
justify-items / align-items:設置網格項在單元格內的水平/垂直對齊方式。
-
justify-content / align-content:設置整個網格在容器內的水平/垂直對齊方式。
項目常用屬性:
.container {
display: grid;
grid-template-columns: 1fr 2fr 1fr;
grid-template-rows: 100px auto 100px;
gap: 10px;
grid-template-areas: "header header header"
"sidebar main ads"
"footer footer footer";}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.ads { grid-area: ads; }
.footer { grid-area: footer; }