# 弹性盒模型
# 弹性盒子
# 声明定义
display:flex
或
display:inline-flex
 1
2
3
2
3
# flex-direction
用于控制盒子元素排列的方向。
| 值 | 描述 | 
|---|---|
| row | 从左到右水平排列元素(默认值) | 
| row-reverse | 从右向左排列元素 | 
| column | 从上到下垂直排列元素 | 
| column-reverse | 从下到上垂直排列元素 | 
# flex-wrap
flex-wrap 属性规定 flex 容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向。
| 选项 | 说明 | 
|---|---|
| nowrap | 元素不拆行或不拆列(默认值) | 
| wrap | 容器元素在必要的时候拆行或拆列。 | 
| wrap-reverse | 容器元素在必要的时候拆行或拆列,但是以相反的顺序 | 
# flex-flow
flex-flow 是 flex-direction 与 flex-wrap 的组合简写模式。
/* 从右向左排列,换行向上拆分行。 */
flex-flow: row-reverse wrap-reverse;
 1
2
2
# justify-content
用于控制元素在主轴上的排列方式。
| 选项 | 说明 | 
|---|---|
| flex-start | 元素紧靠主轴起点 | 
| flex-end | 元素紧靠主轴终点 | 
| center | 元素从弹性容器中心开始 | 
| space-between | 第一个元素靠起点,最后一个元素靠终点,余下元素平均分配空间 | 
| space-around | 每个元素两侧的间隔相等。所以,元素之间的间隔比元素与容器的边距的间隔大一倍 | 
| space-evenly | 元素间距离平均分配 | 
# align-items
用于控制容器元素在交叉轴上的排列方式。
| 选项 | 说明 | 
|---|---|
| stretch | 元素被拉伸以适应容器(默认值) | 
| center | 元素位于容器的中心 | 
| flex-start | 元素位于容器的交叉轴开头 | 
| flex-end | 元素位于容器的交叉轴结尾 | 
# align-content
只适用于多行显示的弹性容器,用于控制行(而不是元素)在交叉轴上的排列方式。
| 选项 | 说明 | 
|---|---|
| stretch | 将空间平均分配给元素 | 
| flex-start | 元素紧靠主轴起点 | 
| flex-end | 元素紧靠主轴终点 | 
| center | 元素从弹性容器中心开始 | 
| space-between | 第一个元素靠起点,最后一个元素靠终点,余下元素平均分配空间 | 
| space-around | 每个元素两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍 | 
| space-evenly | 元素间距离平均分配 | 
# 弹性元素
放在容器盒子中的元素即为容器元素。
TIP
- 不能使用 float 与 clear 规则
 - 弹性元素均为块元素
 - 绝对定位的弹性元素不参与弹性布局
 
# align-self
用于控制单个元素在交叉轴上的排列方式,align-items 用于控制容器中所有元素的排列,而 align-self 用于控制一个弹性元素的交叉轴排列。
| 选项 | 说明 | 
|---|---|
| stretch | 将空间平均分配给元素 | 
| flex-start | 元素紧靠主轴起点 | 
| flex-end | 元素紧靠主轴终点 | 
| center | 元素从弹性容器中心开始 | 
# flex-grow
用于将弹性盒子的可用空间,分配给弹性元素。可以使用整数或小数声明。
flex-grow: 1;
 1
# flex-shrink
与 flex-grow 相反 flex-shrink 是在弹性盒子装不下元素时定义的缩小值。
flex-shrink: 2;
 1
# flex-basis
flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。
可以是长度单位,也可以是百分比。flex-basis的优先级高于width、height属性。
flex-basis: 200px;
flex-basis: 20%;
 1
2
3
2
3
# flex
flex 是 flex-grow、flex-shrink 、flex-basis 缩写组合。
建议使用 flex 面不要单独使用 flex-grow / flew-shrink / flex-basis 。
 flex: 1 0 100px;
 1
# order
用于控制弹性元素的位置,默认为 order:0数值越小越在前面,可以负数或整数。
媒体查询 →