求知若饥,虚心若愚。
传统网页布局的解决方案是基于盒状模型,依赖 display属性 + position属性 + float属性。使用的属性如下:
1 | /*-------下面是依次说到的属性---------*/ |
1 | display:flex;/*W3C 2012年第5次草案及以后的候选推荐标准*/ |
Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
没错,只需记住display:flex就是弹性盒布局,意义是能简单实现布局,如:垂直居中。
注意:设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。
它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。
容器默认存在两根轴:主轴和交叉轴,
项目默认占据两个空间:主轴空间和交叉轴空间。
容器属性一共有6个,分别是:
flex-direction
flex-wrap
flex-flow
justify-content
align-items
align-content
1)flex-direction属性
flex-direction属性决定项目的排列方向。
1 | /**下图依次所对应的属性**/ |
2)flex-wrap属性
flex-wrap属性定义,如果一条轴线排不下,如何换行。
1 | flex-wrap:nowrap(不换行) |
3)flex-flow属性
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
1 | flex-flow: <flex-direction> || <flex-wrap> |
4)justify-content属性
justify-content属性定义项目在主轴上的对齐方式。
1 | /**下图依次所对应的属性**/ |
1 | /**下图依次所对应的属性**/ |
6)align-content属性
align-content属性定义多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
1 | /**下图依次所对应的属性**/ |
项目属性一共有6个,分别是:
order
flex-grow
flex-shrink
flex-basis
flex
align-self
1)order属性
order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
1 | order:<integer> |
2)flex-grow属性
flex-grow属性定义项目的放大比例,默认为0。
1 | flex-grow:<integer> |
3)flex-shrink属性
flex-shrink属性定义项目的缩小比例,默认为1。
1 | flex-shrink:<integer> |
4)flex-basis属性
flex-basis属性定义项目占据的主轴空间。
1 | flex-basis:60px |
5)flex属性
flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
1 | flex:<flex-grow> || <flex-shrink> || <flex-basis> |
6)align-self属性
align-self属性定义项目单独在交叉轴上的对齐方式。
1 | /**下图依次所对应的属性**/ |
总结一下:
1.容器属性使用:
flex-flow决定方向和换行
justify-content决定主轴对齐方式
align-items决定单根轴线的交叉轴对齐方式
align-content决定多根轴线的交叉轴对齐方式
2.项目属性使用:
order决定排序顺序
flex决定项目的缩放比例
align-self决定单个的交叉轴对齐方式
剩下的就是要靠自己去实战了!