http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
http://www.w3cplus.com/css3/flexbox-basics.html
flexbox优点:
1 如果元素容器没有足够的空间,我们无需计算每个元素的宽度,就可以设置他们在同一行;
2 可以快速让他们布局在一列;
3 可以方便让他们对齐容器的左、右、中间等;
4 无需修改结构就可以改变他们的显示顺序;
5 如果元素容器设置百分比和视窗大小改变,不用提心未指定元素的确切宽度而破坏布局,因为容器中的每个子元素都可以自动分配容器的宽度或高度的比例。
注意,设为Flex布局以后,子元素的float
、clear
和vertical-align
属性将失效。
footer {display: flex;flex-flow: row wrap;}
flex-flow: flex-direction(伸缩流的方向)和flex-wrap(伸缩行换行)
flex-flow
属性是flex-direction
属性和flex-wrap
属性的简写形式,默认值为row nowrap
flex-direction:row、row-reverse、column、column-reverse
row
(默认值):主轴为水平方向,起点在左端。
row-reverse
:主轴为水平方向,起点在右端。
column
:主轴为垂直方向,起点在上沿。
column-reverse
:主轴为垂直方向,起点在下沿。
flex-wrap:nowrap、wrap、wrap-reverse
nowrap(默认):不换行。
wrap:换行,第一行在下方。
wrap-reverse:换行,第一行在上方。
设置flexbox子元素(伸缩项目)的对齐:
侧轴(垂直)对齐伸缩项目----align-items:flex-start/baseline(项目的第一行文字的基线对齐)、flex-end、center、stretch
等同于 align-self
主轴对(水平)齐伸缩项目----justify-content:flex-start、flex-end、center、space-between、space-around
伸缩项目堆栈伸缩航----align-content:flex-start、flex-end、center、space-between、space-around、stretch
改变元素布局顺序:order:flex-grow、flex-shrink、flex-basis;
flex-grow为数值 数值取值越大,越排在后面。并且order可以取负值 flex:1;
flex-basis为数值+宽度 flex:1 200px;
flex-shrink称为收缩比率,这个值只有伸缩项目在没主轴方向溢出伸缩容器才会发挥作用. flex:1 2 600px
flex
属性是flex-grow
, flex-shrink
和 flex-basis
的简写,默认值为0 1 auto
。后两个属性可选。