如上例所示,将某个元素设置成flex布局的外部容器的方法就是将其display
属性设置成flex即可:
.flex-container { display: flex; }
flex容器相关的属性如下:
flex-direction
属性可定义flex容器堆叠flex项的方向,其取值范围:
column
- 竖向,从上向下column-reverse
- 竖向,从下往上row
- 横向,从左到右row-reverse
- 横向,从右到左
案例1:column - 竖向,从上向下
.flex-container { display: flex; flex-direction: column; }
案例2:column-reverse - 竖向,从下向上
.flex-container { display: flex; flex-direction: column-reverse; }
案例3:row - 横向,从左到右
.flex-container { display: flex; flex-direction: row; }
案例4:row-reverse - 横向,从右到左
.flex-container { display: flex; flex-direction: row-reverse; }
flex-wrap
属性决定flex项是否会自动断行。其取值范围:
wrap
- 会自动断行,需断则断nowrap
- 永不断行(默认)wrap-reverse
- 会自动断行,需断则断,不过是向反方向新起一行,
案例1 warp - 会自动断行,需断则断
.flex-container { display: flex; flex-wrap: wrap; }
案例2 nowarp - 永不断行
.flex-container { display: flex; flex-wrap: nowrap; }
案例3 warp-reverse - 会自动断行,向反方向新起一行
.flex-container { display: flex; flex-wrap: wrap-reverse; }
洒家是一个文盲,洒家是一个懒蛋,于是洒家用flex-flow
属性通吃了flex-direction
和flex-wrap
这两种属性。如下所示:
.flex-container { display: flex; flex-flow: row wrap; }
justify-content
属性定义flex项的对齐方式(一般来说特指在每一行上的对齐方式),其取值范围:
center
- 居中flex-start
- 对齐flex起始方向flex-end
- 对齐flex结束方向space-around
- 保证flex项外间距一致,尽可能两端对齐space-between
- 保证flex项之间的距离一致,尽可能两端对齐
案例1 center - 居中
.flex-container { display: flex; height: 200px; align-items: center; }
案例2 flex-start - 对齐flex起始方向
.flex-container { display: flex; height: 200px; align-items: flex-start; }
案例3 flex-end - 对齐flex结束方向
.flex-container { display: flex; height: 200px; align-items: flex-end; }
案例4 space-around - 保证flex项外间距一致,尽可能两端对齐
.flex-container { display: flex; height: 200px; align-items: space-around; }
案例5 space-between - 保证flex项之间的距离一致,尽可能两端对齐
.flex-container { display: flex; height: 200px; align-items: space-between; }
align-items
属性可以用来定义flex项在垂直方向的对齐方式。其取值范围:
center
- 垂直方向上居中flex-start
- 对齐起始方向(一般来说是向上边对齐)flex-end
- 对齐结束方向(一般来说是向下边对齐)stretch
- 垂直方向上拉伸至满格baseline
- 只保持flex项的内容基线在同一条水平线上就ok啦
案例1:center - 垂直方向上居中
.flex-container { display: flex; height: 200px; align-items: center; }
案例2:flex-start - 对齐起始方向
.flex-container { display: flex; height: 200px; align-items: flex-start; }
案例3:flex-end - 对齐结束方向
.flex-container { display: flex; height: 200px; align-items: flex-end; }
案例4:stretch - 拉伸至满格
.flex-container { display: flex; height: 200px; align-items: stretch; }
案例5:baseline - 内容基线一致
.flex-container { display: flex; height: 200px; align-items: baseline; }
align-content
属性定义的是flex行的对齐方式,一般情况下,指的是行在垂直方向上的对齐方式。其取值范围是:
center
- 居中stretch
- 拉升至整体满格space-around
- 保证flex行外间距一致,尽可能两端对齐space-between
- 保证flex行之间的距离一致,尽可能两端对齐flex-start
- 对齐flex起始方向flex-end
- 对齐flex结束方向
案例1:center - 居中
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: center; }
案例2:stretch - 整体拉升至满格
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: stretch; }
案例3:space-around - 保证flex行外间距一致,尽可能两端对齐
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: space-around; }
案例4:space-between - 保证flex行之间的距离一致,尽可能两端对齐
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: space-between; }
案例5:flex-start - 对齐flex起始方向
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: flex-start; }
案例6:flex-end - 对齐flex结束方向
.flex-container { display: flex; height: 600px; flex-wrap: wrap; align-content: flex-end; }
保持一个flex项目完美居中(就是垂直方向、水平方向都居中)的最佳实践方式如下所示:
.flex-container { display: flex; height: 300px; justify-content: center; align-items: center; }
介绍完了flex容器的相关属性后,接下去要来深入介绍flex项的相关属性。