Flex弹性布局知识点总结
弹性布局(Flexbox,Flexible Box Layout)是 CSS3 中提供的一种用于在容器中有效分配空间并对齐内容的布局方式,特别适用于一维(单行或单列)布局。下面是弹性布局的系统总结,方便你快速掌握与查阅。
一、基本概念
1. 启用弹性布局
display: flex; /* 块级弹性容器 */
display: inline-flex; /* 行内弹性容器 */
2. 术语解释
- 容器(container):设置了
display: flex
的元素。 - 项目(items):容器中的直接子元素。
- 主轴(main axis):项目排列的方向。
- 交叉轴(cross axis):与主轴垂直的方向。
二、容器属性
| 属性名 | 作用 | 常用值 |
|-------------------|------------------------------------|--------------------------------------|
| flex-direction
| 设置主轴方向(项目排列方向) | row
(默认, 横向),row-reverse
,column
,column-reverse
|
| flex-wrap
| 是否换行 | nowrap
(默认),wrap
,wrap-reverse
|
| flex-flow
| flex-direction
和 flex-wrap
的简写 | 如:row wrap
|
| justify-content
| 主轴对齐方式 | flex-start
,flex-end
,center
,space-between
,space-around
,space-evenly
|
| align-items
| 交叉轴对齐方式(单行) | stretch
(默认),flex-start
,flex-end
,center
,baseline
|
| align-content
| 交叉轴对齐方式(多行) | 同 align-items
,但针对多行容器 |
三、项目属性
| 属性名 | 作用 | 常用值 |
|---------------|----------------------------------------------|--------------------------|
| order
| 控制项目排列顺序,数值越小越靠前 | 整数,默认 0
|
| flex-grow
| 项目放大比例 | 默认 0
(不放大) |
| flex-shrink
| 项目缩小比例 | 默认 1
(可缩小) |
| flex-basis
| 项目初始大小(主轴方向) | 可设置为像素、百分比、auto
|
| flex
| flex-grow
、flex-shrink
和 flex-basis
的简写 | 如:1 0 auto
,0 1 100px
|
| align-self
| 单独项目在交叉轴的对齐方式 | 覆盖 align-items
,值同上 |
四、常见布局示例
水平居中
display: flex;
justify-content: center;
align-items: center;
多列等宽布局
.container {
display: flex;
}
.item {
flex: 1;
}
两端对齐,中间自适应
<div class="container">
<div class="left">左</div>
<div class="center">中</div>
<div class="right">右</div>
</div>
.container {
display: flex;
}
.center {
flex: 1;
}
五、常见问题
flex: 1
是flex: 1 1 0%
的简写,意味着项目可以放大、缩小,初始宽度为0
。- 子元素宽度被
flex-basis
控制优先于width
。 - 项目默认
min-width
不是 0,可能会导致无法缩小。