学习css布局CSS3中的flex布局
三生石flex是Flexible Box的缩写,意思为“弹性布局”,在使用过程中简单、易用、代码较少,在制作网页的时候经常使用这种方法来进行布局。
容器设置为flex以后,子元素的float、clear和vertcal-align的属性将失效。
容器的六个属性
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; }
|