- 1.flex-direction - 主轴方向
- 2.justify-content - 主轴子项目排列方式
- 3.flex-wrap - 子项目是否换行
- 4.align-items - 侧轴子项目排列方式(==单行==)
- 5.align-content - 侧轴子元素排列(==多行==)
- 6.flex-flow - 主轴方向、子项目是否换行
在flex布局中存在主轴,flex容器中的子项目都是沿着主轴排列的
我们可以通过flex-direction属性来设置主轴的方向
| 属性值 | 说明 |
|---|---|
| row(默认) | 主轴设置为:横向 |
| row-reverse | 主轴设置为:横向且逆向 |
| column | 主轴设置为:纵向 |
| column-reverse | 主轴设置为:纵向且逆向 |
通过设置justify-content属性来设置子项目在主轴上的排列方式
| 属性值 | 说明 |
|---|---|
| flex-start(默认) | 从主轴首部开始排列 |
| flex-end | 从主轴尾部开始排列 |
| center | 在主轴居中对齐 |
| space-around | 平分剩余空间 |
| space-between | 首尾贴边,再平分剩余空间 |
-
以横轴为主轴时:
-
以纵轴为主轴时:
通过flex-wrap属性来设置:当父容器的主轴方向无法再容纳子项目时是否换行
| 属性值 | 说明 |
|---|---|
| nowrap(默认) | 不换行,让子项目变形 |
| wrap | 换行 |
-
默认(nowrap)是不换行的,无法容纳时会挤压子项目:
-
warp换行:
需要注意,align-items属性只有元素不换行时才能正常生效。假如父容器设置了flex-wrap: wrap且元素过多出现换行,此时align-items属性就无效了
默认横向为主轴,默认纵向为侧轴
justify-content设置子项目沿主轴的排列形式
align-items用于设置子项目沿侧轴的排列形式
| 属性值 | 说明 |
|---|---|
| stretch(默认) | 子项目无高度时拉伸,有高度时从侧轴首部开始排列 |
| flex-start | 从侧轴首部开始排列 |
| flex-end | 从侧轴尾部开始排列 |
| center | 沿着侧轴居中 |
下图演示子项目的"水平居中 + 垂直居中":
- display: flex - 开启弹性布局
- justyfy-content: center - 主轴(默认横轴)子项目居中排列(水平居中)
- align-items: center - 侧轴(默认纵轴)子项目居中排列(垂直居中)
父容器设置了flex-wrap: wrap且元素过多出现换行,align-content属性方才生效
也就是说,该属性只有在多行时才有效
| 属性值 | 说明 |
|---|---|
| flex-start(默认) | 从侧轴首部开始排列 |
| flex-end | 从侧轴尾部开始排列 |
| center | 沿着侧轴居中 |
| space-around | 平分剩余空间 |
| space-between | 首尾贴边,再平分剩余空间 |
| stretch(默认) | 子项目无高度时拉伸,有高度时从侧轴首部开始排列 |
flex-flow实际上是flex-direction和flex-warp的复合属性:
flex-flow: row wrap; flex-flow: row nowrap; flex-flow: row-reverse wrap; flex-flow: row-reverse nowrap; flex-flow: column wrap; flex-flow: column nowrap; flex-flow: column-reverse wrap; flex-flow: column-reverse nowrap;



