定义
flex:弹性盒模型任何一个容器都可以指定flex布局(行内元素,块级元素) 容器默认存在两根轴: 水平的主轴(main axis) 和垂直的交叉轴(cross axis) 。主轴的开始位置(与边框的交叉点)叫做main start,结束的位置佳作main end;交叉轴的开始位置又叫做cross start,结束为止叫做cross end。
父元素上的属性
1.flex-direction属性决定主轴方向
四个属性值:row,row-reverse,column,column-reverse
2.flex-wrap 决定属性是不是换行
三个属性值:nowrap,wrap,wrap-reverse
3.flex-flow是flex-direction和flex-wrap的集合体
默认row nowrap
.box{
flex-flow:row<flex-direction> || nowrap<flex-wrap>;
}
4.justify-content定义主轴的对其方式
5个属性值:flex-start flex-end center space-between space-around
5.align-items指定容器在交叉轴上的对其方式
5个属性值:flex-start flex-end center baseline stretch
6.align-content指定子元素侧轴的多行效果对齐方式
6个属性值:flex-start flex-end center space-between space-around stretch
子元素上的属性
1. flex-grow属性 定义了项目的放大比例,默认为0,如果存在剩余控件,也不放大
如果项目所有的flex-grow属性都为1,它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目的都为1,为2的项目占据的剩余空间将比其他的项目多一倍。
.item{
flex-grow:<number>;/*default 0*/
}
2.flex-shrink属性 定义了项目的缩小比列,默认为1,如果空间不足,该项目将缩小
.inner:nth-child(5){ order: -1; flex-shrink:24; }
3.order控制子元素的排列顺序的。
子元素排列的位置默认是按照html先后顺序来排列的,html结构谁在前面默认就排列在前面;order的作用就是改变子元素排列顺序。
<div id="box">
<div class="inner item">1</div>
<div class="inner">2</div>
<div class="inner">3</div>
<div class="inner">4</div>
<div class="inner">5</div>
</div>
.inner:nth-child(5){
order: -1;
}
4.flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
flex-basis:200px ,如果项目有多余的空间,设置为200px。那么会放大到200的宽度;
5. flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
6.align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
除了auto是表示继承父元素,其他的跟align-items是一样的。