flex是flexible的縮寫,意思為彈性布局
flex布局出現,vertical-align,float,clear都失效。
.box{
display:flex;
}
行內元素也可以使用flex布局
.box{
display:inline-flex;
}
webkit瀏覽器內核必須加上前綴
.box{
display:-webkit-flex;
display:flex;
}
容器的屬性
1.flex-direction
決定主軸的方向,row ,row-reverse(從右往左),column,column-reverse(從下往上)
2.flex-wrap
決定換不換行
nowrap 不換行
wrap ? 換行,第一行在上邊
wrap-reverse ? ?換行,第一行在下邊
3.flex-flow
是flex-direction和flex-wrap的綜合
flex-flow:column||nowrap
4.justify-content
決定在主軸上的對齊方式(水平方向)
flex-start 左對齊
flex-end 右對齊
center ?居中
space-between ? ? 兩端對齊,中間間隔一樣
space-around? ? 每個項目兩側的間隔相等。所以,項目之間的間隔比項目與邊框的間隔大一倍。
5.align-item
定義與交叉軸如何對齊
flex-start:交叉軸的起點對齊
flex-end:交叉軸的終點對齊
center:交叉軸的中點對齊
baseline:交叉軸的第一行文字的基線對齊
stretch::如果項目未設置高度或設為auto,將占滿整個容器的高度。
6.align-content
flex-start:與交叉軸的起點對齊。
flex-end:與交叉軸的終點對齊。
center:與交叉軸的中點對齊。
space-between:與交叉軸兩端對齊,軸線之間的間隔平均分布。
space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
stretch(默認值):軸線占滿整個交叉軸。
order:定義項目排列順序,數值越小,排列越靠前
.item{order:;}
flex-grow:定義項目的放大比例,默認為0,即如果存在剩余空間,也不放大。
如果所有項目的flex-grow屬性都為1,則它們將等分剩余空間(如果有的話)。如果一個項目的flex-grow屬性為2,其他項目都為1,則前者占據的剩余空間將比其他項多一倍。
flex-shink:定義了項目的縮小比例,默認為1,即如果空間不足,該項目將縮小。
如果所有項目的flex-shrink屬性都為1,當空間不足時,都將等比例縮小。如果一個項目的flex-shrink屬性為0,其他項目都為1,則空間不足時,前者不縮小。
flex屬性
flex屬性是flex-grow,flex-shrink和flex-basis的簡寫,默認值為0 1 auto。后兩個屬性可選。
{0 1 auto}
align-self屬性
align-self屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性。默認值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。