关于弹性布局的教程,网上已经有很多很多写得比较详细的,所以这里就不再细说啦
这篇文章将会把常用的属性整理出来,就当作是一个速查手册吧,方便以后使用
1、基本概念
- 设置
display: flex;
的元素称为 Flex 容器,其中所有的子元素称为 Flex 项目 - 容器存在两根用于定位的轴,分别是水平的 主轴 和垂直的 交叉轴,项目默认沿主轴排列
2、容器属性(设置在容器上)
- flex-direction:设置主轴的方向,可选值如下
- row(默认):主轴沿水平方向,起点在左边
- row-reverse:主轴沿水平方向,起点在右边
- column:主轴沿垂直方向,起点在上边
- column-reverse:主轴沿垂直方向,起点在下边
- flex-wrap:定义换行的方式,可选值如下
- nowrap(默认):不换行
- wrap:换行,第一行在上面
- wrap-reverse:换行,第一行在下面
- justify-content:定义项目在主轴上的对齐方式,可选值如下
- flex-start(默认):起点对齐
- flex-end:终点对齐
- center:居中对齐
- space-between:两端对齐,项目之间间隔相等
- space-around:两端对齐,项目两侧间隔相等
align-items:定义项目在交叉轴上的对齐方式,可选值如下
- flex-start:起点对齐
- flex-end:终点对齐
- center:居中对齐
- baseline:项目的第一行文字的基线对齐
- stretch(默认):如果项目未设置 height 或者设置为 auto,那么项目占满容器的高度
3、项目属性(设置在项目上)
- order:定义项目的排列顺序,属性接受一个整数,数值越小排列越前,默认为 0
- flex-grow:定义项目的放大比例,默认为 0,表示即使存在剩余空间,也不放大
如果所有项目设置为 1,并且还有剩余空间,那么它们将会等分剩余空间
如果一个项目设置为 2,其它项目设置为 1,那么该项目占据的剩余空间将会比其它项目多一倍 - flex-shrink:定义项目的缩小比例,默认为 1,表示如果空间不足,就会缩小
如果所有项目设置为 1,并且空间不足,那么它们将会等比缩小
如果一个项目设置为 0,其它项目设置为 1,那么该项目不会缩小,而其它项目正常缩小 - flex-basis:在分配多余空间前,项目占据的主轴空间,默认为 auto,表示项目原来的大小
- align-self:定义项目的对齐方式,覆盖 align-items 设置,默认为 auto,表示继承父元素设置