Flex 布局完全指南:从基础属性到实战技巧
📅 2026/7/18 23:29:27
👁️ 阅读次数
📝 编程学习
1. 什么是 Flex 布局?
Flex 布局是 CSS3 中一种强大的布局模型,旨在为容器内的项目提供更有效、更灵活的排列、对齐和分配空间的方式,Flex 布局的核心思想是赋予容器改变其子元素(称为 Flex 项目)的宽度、高度和顺序的能力,以最佳方式填充可用空间。它特别适合构建一维布局(行或列),能够轻松解决传统布局中常见的垂直居中、等高等难题。
2. Flex 容器与项目
要使用 Flex 布局,首先需要将一个元素的display属性设置为flex。这个元素就成为了Flex 容器,其直接子元素自动成为Flex 项目。
.container{display:flex;}3. 核心属性
3.1 flex-direction:主轴方向
flex-direction属性定义了 Flex 项目在容器内的排列方向,即主轴的方向。
row(默认值):主轴为水平方向,从左往右。.container{flex-direction:row;}row-reverse:主轴为水平方向,从右往左。.container{flex-direction:row-reverse;}column:主轴为垂直方向,从上往下。.container{flex-direction:column;}column-reverse:主轴为垂直方向,从下往上。.container{flex-direction:column-reverse;}
3.2 justify-content:主轴对齐
justify-content属性定义了 Flex 项目在主轴上的对齐方式。
flex-start(默认值):项目向主轴起点对齐。.container{justify-content:flex-start;}flex-end:项目向主轴终点对齐。.container{justify-content:flex-end;}center:项目在主轴上居中对齐。.container{justify-content:center;}space-between:两端对齐,项目之间的间隔相等。.container{justify-content:space-between;}space-around:每个项目两侧的间隔相等,所以项目之间的间隔比项目与边框的间隔大一倍。.container{justify-content:space-around;}
3.3 align-items:交叉轴单行对齐
align-items属性定义了 Flex 项目在交叉轴(与主轴垂直的轴)上如何对齐(适用于单行情况)。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。.container{align-items:stretch;}flex-start:项目向交叉轴的起点对齐。.container{align-items:flex-start;}flex-end:项目向交叉轴的终点对齐。.container{align-items:flex-end;}center:项目在交叉轴上居中对齐。.container{align-items:center;}baseline:项目根据它们的基线对齐。.container{align-items:baseline;}
3.4 align-content:交叉轴多行对齐
align-content属性定义了多行Flex 项目在交叉轴上的对齐方式。当容器只有一行时,此属性不起作用。
stretch(默认值):多行拉伸以平分剩余空间。.container{align-content:stretch;}flex-start:多行向交叉轴的起点对齐。.container{align-content:flex-start;}flex-end:多行向交叉轴的终点对齐。.container{align-content:flex-end;}center:多行在交叉轴上居中对齐。.container{align-content:center;}space-between:交叉轴上两端对齐,行之间的间隔相等。.container{align-content:space-between;}space-around:每行两侧的间隔相等,所以行之间的间隔比行与边框的间隔大一倍。.container{align-content:space-around;}
3.5 align-self:单个项目交叉轴对齐
align-self属性允许单个 Flex 项目有与其他项目不一样的对齐方式,可覆盖容器的align-items属性。它作用于Flex 项目上。
auto(默认值):继承父容器的align-items属性。.item{align-self:auto;}stretch:拉伸以填满容器交叉轴方向。.item{align-self:stretch;}flex-start:向交叉轴起点对齐。.item{align-self:flex-start;}flex-end:向交叉轴终点对齐。.item{align-self:flex-end;}center:在交叉轴上居中对齐。.item{align-self:center;}baseline:根据基线对齐。.item{align-self:baseline;}
4. 实战示例与技巧
<divclass="container"><div>我是垂直居中的内容</div></div>.container{display:flex;justify-content:center;/* 主轴居中 */align-items:center;/* 交叉轴居中 */height:300px;border:1px solid #ccc;}5. 总结
Flex 布局通过一套直观的属性,极大地简化了 CSS 布局。记住这个核心关系:
- 容器属性控制整体排列:
flex-direction,justify-content,align-items,align-content,flex-wrap。 - 项目属性控制个体行为:
flex(复合属性),align-self,order。
掌握flex-direction确定方向,用justify-content和align-items解决大部分对齐问题,再用flex属性灵活分配空间。
编程学习
技术分享
实战经验