flex是Flexible Box的缩写,意思为“弹性布局”,在使用过程中简单、易用、代码较少,在制作网页的时候经常使用这种方法来进行布局。

容器设置为flex以后,子元素的float、clear和vertcal-align的属性将失效。

1
.box{display:flex;}

容器的六个属性

flex-direction

决定主轴的方向(即项目的排列方向)

1
2
3
4
5
6
.box{
display:flex;
flex-direction:row; //默认值,主轴为水平方向,起点在左端。
flex-direction:row-reverse; //主轴为水平方向,起点在右端。
flex-direction:column; //主轴为垂直方向,起点在上沿。
flex-direction:column-reverse; //主轴为垂直方向,起点在下沿。}

flex-wrap

定义如果一条轴线排不下,如何换行

1
2
3
4
5
6
.box{
display:flex;
flex-wrap:nowrap; //默认值,不换行。
flex-wrap:wrap; //换行,第一行在上方。
flex-wrap:wrap-reverse; //换行,第一行在下方。
}

flex-flow

是flex-direction属性和flex-wrap属性的简写形式

1
2
3
4
.box{
display:flex;
flex-flow:row nowrap; //默认值,不换行。
}

justify-content

属性定义了项目在主轴上的对齐方式。

1
2
3
4
5
6
7
8
.box{
display:flex;
justify-content:flex-start; //默认值,左对齐。
justify-content:flex-end; //右对齐。
justify-content:center; //水平居中。
justify-content:space-between; //两队对齐,项目之间间隔相等。
justify-content:space-around; //每个项目两侧间隔相等。
}

align-items

属性定义项目在交叉轴上如何对齐。

1
2
3
4
5
6
7
8
.box{
display:flex;
align-items:flex-start; //交叉轴的起点对齐。
align-items:flex-end; //交叉轴的终点对齐。
align-items:center; //垂直居中,交叉轴的中点对齐。
align-items:baseline; //项目第一行文字的基线对齐。
align-items:stretch; //默认值,项目未设置高度或设为auto,将占满整个容器的高度。
}

align-content

属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

1
2
3
4
5
6
7
8
9
.box{
display:flex;
align-content:flex-start; //与交叉轴的起点对齐。
align-content:flex-end; //与交叉轴的终点对齐。
align-content:center; //与交叉轴的中点对齐。
align-content:space-between; //与交叉轴两端对齐,轴线之间间隔平均分布。
align-content:space-between; //每根轴线两侧间隔相等。
align-content:stretch; //默认值,轴线占满交叉轴。
}
容器内元素6个属性

flex-grow定义元素的放大比例,默认为0,即如果存在剩余空间,也不放大。

1
2
3
   .box.item{
flex-grow:number(数字); //默认为0
}

flex-shrink定义元素的缩小比例,默认为1,即如果空间不足,该项目将缩小。

1
2
3
.item{
flex-shrink:number(数字); //默认为0
}

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间。

1
2
3
.item{
flex-basis:length | auto;
}

align-self允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。

1
2
3
4
5
6
7
8
.item{
align-self:auto;
align-self:flex-start;
align-self:flex-end;
align-self:center;
align-self:baseline;
align-self:stretch;
}

弹性布局复习思维导图.PNG