为什么选择Flexbox?
CSS Flexbox(弹性盒子布局)是CSS3引入的一维布局模型,专门解决传统布局方案(浮动、定位、表格布局)的各种痛点。使用Flexbox,你可以轻松实现:垂直居中(不再需要各种hack);等高列布局(不需要假背景图);灵活的排列方向(一行代码从横向改为纵向);剩余空间分配(auto margin的终极替代)。
核心概念:容器和项目
Flexbox布局涉及两个层级:容器(flex container)和项目(flex item)。容器设置display: flex后,其直接子元素自动成为项目。容器的属性控制整体排列方式,项目的属性控制个体的伸缩行为。
容器属性详解
- flex-direction:主轴方向。row(默认,水平从左到右)、row-reverse(水平从右到左)、column(垂直从上到下)、column-reverse(垂直从下到上)
- flex-wrap:是否换行。nowrap(默认,不换行,可能溢出)、wrap(换行)、wrap-reverse(反向换行)
- justify-content:主轴对齐。flex-start、flex-end、center、space-between、space-around、space-evenly
- align-items:交叉轴对齐。stretch(默认,拉伸)、flex-start、flex-end、center、baseline
- align-content:多行交叉轴对齐(仅在wrap时有效)
- gap:项目间距(替代margin的简洁方案)
项目属性详解
- flex-grow:放大比例。默认0(不放大),设为1则等分剩余空间。
- flex-shrink:缩小比例。默认1(空间不足时等比缩小),设为0则不缩小。
- flex-basis:初始大小。默认auto(由内容决定),可以设为固定值或百分比。
- flex:以上三者的简写。推荐使用flex: 1代替flex: 1 1 0%。
- align-self:单独设置交叉轴对齐,覆盖容器的align-items。
- order:排列顺序。默认0,数值越小越靠前。
5个经典布局模式
- 完美居中:容器设置display:flex; justify-content:center; align-items:center;
- 等分导航栏:项目设置flex:1,自动等宽分配
- 侧边栏+主内容:侧边栏固定宽度(flex:0 0 200px),主内容自适应(flex:1)
- 粘性页脚:容器设置min-height:100vh; flex-direction:column; 主内容设置flex:1
- 圣杯布局:结合flex-wrap和order属性实现经典三栏布局
工具推荐
使用我们的在线CSS Flexbox生成器,可视化调整属性,实时预览布局效果,一键生成CSS代码,帮助你快速掌握Flexbox布局。