这些布局方法都是网站制作过程中常用的技术,也是目前前端布局的绝对主流和首选方案。
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:通过命名区域来定义布局模板。
-
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; }