CSS Flex 弹性布局入门指南
CSS Flex 弹性布局入门指南
一、为什么用 Flex
传统布局靠 float、position、margin 拼,居中、等分、自适应宽度都很麻烦,移动端多屏适配尤其痛苦。Flex 弹性布局把容器当成一个弹性盒子,子元素沿主轴排列,自动分配空间,几行代码就能实现水平垂直居中、等分列、两端对齐,是现代前端布局的首选。
二、两个核心概念
- 容器(flex container):给父元素设
display: flex,它就是弹性容器; - 项目(flex item):容器里的直接子元素,按主轴排列。
主轴由 flex-direction 决定,交叉轴与之垂直。
三、容器常用属性
.box {
display: flex;
flex-direction: row; /* 主轴方向:水平从左到右 */
justify-content: center; /* 主轴对齐:居中 */
align-items: center; /* 交叉轴对齐:垂直居中 */
flex-wrap: wrap; /* 超出换行 */
gap: 12px; /* 项目间距 */
}
justify-content:主轴对齐,可选 flex-start、center、flex-end、space-between(两端贴边、中间均分)、space-around;align-items:交叉轴对齐,可选 stretch、center、flex-start、flex-end;flex-wrap:nowrap 不换行,wrap 换行。
四、项目常用属性
.item {
flex: 1; /* 等比占据剩余空间 */
flex-grow: 1; /* 放大比例 */
flex-shrink: 0; /* 不缩小 */
align-self: flex-end; /* 单独覆盖交叉轴对齐 */
}
flex: 1 是开发最常用简写,让所有项目平分剩余宽度,卡片列表、导航项等分就靠它。flex-shrink: 0 防止内容被挤压变形。
五、经典场景:水平垂直居中
.center {
display: flex;
justify-content: center;
align-items: center;
height: 300px;
}
一行 flex 三属性搞定居中,比 margin 负值、absolute 定位简洁可靠。
六、常见误区
- 给容器设了 flex 却在子元素上用 float,float 失效;
- 忘记
flex-wrap: wrap,屏幕变窄项目挤成一行不换行; flex: 1和固定宽度冲突,导致布局错乱;- 混淆 justify-content(主轴)和 align-items(交叉轴),居中方向写反;
- 嵌套 flex 时内层项目继承规则,尺寸没控制好溢出。
七、总结
Flex 用容器属性控制主轴排列、交叉轴对齐和换行,用项目属性 flex 分配剩余空间。掌握 flex 方向、justify-content、align-items、flex:1 这几个核心,配合 gap 设间距,就能快速写出自适应的导航、卡片、居中布局,是前端必会的基础能力。