flex 盒模型是 CSS3 中全新的布局模型,其子元素拥有强大的空间分布和对齐能力。
flex 盒模型示意图:
容器:一个元素的 display 设置为 flex 或 inline-flex,就会创建一个 flex 容器。
项:容器的直接子元素被称为 flex 项,项会依据 flex 盒模型的规则进行布局。
主轴:排列项的轴被称为主轴,默认情况下,项由主轴起点延伸至终点进行排列。
交叉轴:垂直于主轴的轴被称为交叉轴,交叉轴同样具有方向性。
*display 取值 flex ,在流布局中,生成块级别的容器;取值 inline-flex 在流布局中,生成内联级别的容器。
*容器中,float 和 clear 不会对项产生浮动和清除效果,vertical-align 对于项也不会产生效果。
把一个元素的 display 属性值设置为 flex 或者 inline-flex,那么,其直接子元素就会自动成为 flex 项。
例子:
.flex-container { display: flex; } 或者 .flex-container { display: inline-flex; }
flex-direction
指定主轴的方向。
flex-wrap
指定项在必要的时候是否可以拆行。
flex-flow
flex-flow 属性是 flex-direction 和 flex-wrap 属性的复合属性,默认值为 row nowrap。
justify-content
指定项在主轴上的位置。
align-items
指定项在交叉轴上的对齐方式。
align-content
指定项在交叉轴上的对齐方式,但前提是容器内部存在多行的项。
flex-grow
指定项的扩展规则:如果主轴上的剩余空间是正数,应该分配多少给该项;
值为数字,负值无效;
默认值为0,表示即使存在剩余空间,也不进行分配。
flex-shrink
指定项的收缩规则:如果主轴上的剩余空间是负数,该项的收缩比例是多少;
值为数字,负值无效;
默认值为1,表示当剩余空间为负数时,所有项进行等比例收缩;
值为0时,不进行收缩。
flex-basis
指定项在主轴上占据的空间大小,默认值为 auto,表示项的空间大小具有包裹性,但最大不会超过其容器。
flex
flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的复合属性,默认值为 0 1 auto。
order
指定项在主轴上的视觉顺序 ;
值为数字,默认值为0,数字越小,排列越靠近主轴起点位置;
相同值的项依据在源码中出现的顺序进行排列。
align-self
指定单个项在交叉轴上的对齐方式,可覆盖 align-items 属性值;
默认值为 auto,表示继承容器的 align-items 值;
其他值与 align-items 值效果一致。
如有错误,欢迎指正,本人不胜感激。