Flex 是 Flexible Box 的縮寫,意爲"彈性佈局",用來爲盒狀模型提供最大的靈活性。佈局
任何一個容器均可以指定爲 Flex 佈局。flex
使用 flex 佈局首先要設置父容器 display: flex
,而後再設置 justify-content: center
實現水平居中,最後設置 align-items: center
實現垂直居中(須要在肯定height下才能實現)。spa
#dad { height:300px; display: flex; justify-content: center; align-items: center }
justify-content
和 align-items
是啥?哪裏能夠看出橫向、豎向的語義?是的,flex 的確沒有那麼簡單,這就要從兩個基本概念提及了。code
flex 的核心的概念就是 容器 和 軸。容器包括外層的 父容器 和內層的 子容器,軸包括 主軸 和 交叉軸,能夠說 flex 佈局的所有特性都構建在這兩個概念上。blog
baseline
默認是指首行文字,即 first baseline
,全部子容器向基線對齊,交叉軸起點到元素基線距離最大的子容器將會與交叉軸起始端相切以肯定基線。
子容器是有彈性的(flex 即彈性),它們會自動填充剩餘空間,子容器的伸縮比例由 flex
屬性肯定。it
flex
的值能夠是無單位數字(如:1, 2, 3),也能夠是有單位數字(如:15px,30px,60px),還能夠是 none
關鍵字。子容器會按照 flex
定義的尺寸比例自動伸縮,若是取值爲none
則不伸縮。io
雖然 flex
是多個屬性的縮寫,容許 1 - 3 個值連用,但一般用 1 個值就能夠知足需求,它的所有寫法可參考下圖。class
justify-content
屬性決定子容器沿主軸(水平方向)的排列方式,align-items
屬性決定子容器沿着交叉軸(垂直方向)的排列方式從左到右:flex-direction: row容器
設置換行方式:flex-wrap擴展
決定子容器是否換行排列,不但能夠順序換行並且支持逆序換行。
多行沿交叉軸對齊:align-content
當子容器多行排列時,設置行與行之間的對齊方式。
設置基準大小:flex-basis
flex-basis
表示在不伸縮的狀況下子容器的原始尺寸。主軸爲橫向時表明寬度,主軸爲縱向時表明高度。
設置擴展比例:flex-grow
子容器彈性伸展的比例。如圖,剩餘空間按 1:2 的比例分配給子容器。
設置排列順序:order
改變子容器的排列順序,覆蓋 HTML 代碼中的順序,默認值爲 0,能夠爲負值,數值越小排列越靠前。