flex布局总结(新版本)
介绍
看新版本之前,可以去看看我之前发布的老版本里轴和富裕空间的概念,如果已经了解可以跳过.
新版本flex只支持IE10及以上.安卓4.4及以上
容器的属性
先看看新版本布局:
<style>
#wrap{
width: 300px;
height: 300px;
border: 1px solid black;
margin: 50px auto;
display: flex; /* 新版本flex */
}
.box{
width: 50px;
height: 50px;
background: red;
text-align: center;
line-height: 50px;
}
</style>
<div id="wrap">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>1.flex-direction
同时控制主轴是哪一根和主轴的方向
row 主轴是 X轴 , colum 主轴是 Y轴 ,
row-reverse 和colum-reverse 分别代表主轴是X轴反方向、主轴是X轴反方向。
看看 row-reverse 的效果:

我们发现: 新版本的富裕空间和老版本的有所差异,老版本的富裕空间不会随着轴的方向改变而改变,新版本的富裕空间默认在轴的正方向
2.justify-content
控制新版本的主轴富裕空间,相当于老版本flex中的 -webkit-box-pack ;
flex-start 富裕空间在主轴的正方向; flex-end 富裕空间在主轴的负方向; center 富裕空间在主轴的两边; space-between 富裕空间在所有项目之间; space-around 富裕空间平均分配在所有项目两边.再在 #wrap 上添加 justify-content: space-between; :

3.align-items
控制新版本的侧轴富裕空间,相当于老版本的-webkit-box-align
flex-start 富裕空间在侧轴的正方向; flex-end 富裕空间在侧轴的负方向; center 富裕空间在侧轴的两边; baseline 按基线对齐; stretch 等高布局(在项目没有设置高度时).再在 #wrap 上添加 align-items: center; :

项目的属性
flex-grow
将主轴上的富裕空间按比例分配到项目的width/height上,相当于老版本flex中的 -webkit-box-flex
在项目中添加 flex-grow:1; 这里主轴富裕空间一共有300-50*4= 100 px ;一共有4个项目则每个项目分 1/4 即 100*(1/4)= 25 px ,最终项目占的位置为 50+25=75 px ,看看效果:

项目分配了 主轴富裕空间 所以占满了主轴.
也可以单独给一个项目设置更多的比例,在css中添加
#wrap> .box:nth-child(1){
flex-grow: 7;
}这样第一个 .box 占了主轴富裕空间的 7/10 (一共把富裕空间分成了10分,第一个项目占七份,其它的各占一份) ,最终第一个项目占的位置为 50+100*(7/10)= 120 px , 其它的项目占的位置为 50+100*(1/10)=60 px 看看效果:

其它属性
容器新增的属性有 flex-wrap 、align-content 、flex-flow
项目新增的属性有 order 、align-self 、flex-shrink、flex-basis、flex