2009年,W3C 提出了一個新的方案—-Flex 佈局(彈性佈局),可以簡單、完整、響應式地實現各種頁面佈局。
傳統盒子模型:
一般的佈局我們都是用的盒子模型,透過浮動 定位來佈局。
行元素、行內塊元素不換行,塊元素獨佔一行的。 利用浮動可以使塊元素橫排。
但是某些特殊的佈局,它們很難實現。比如 垂直居中。
設定彈性盒子之後,盒子內部的元素沒有行元素與塊元素之分,float會失效。
採用flex佈局的元素,叫做flex容器,簡稱容器
容器內的所有子元素叫做flex項目,簡稱項目
flex-direction: 主軸的方向
row(預設值):主軸為水平方向,起點在左端。
row-reverse:主軸為水平方向,起點在右端。
column:主軸為垂直方向,起點在上沿。
column-reverse:主軸為垂直方向,起點在下沿。
flex-wrap: 若一條軸線排不下,如何換行。
nowrap(預設):不換行。
wrap:換行,第一行在上方。
wrap-reverse:換行,第一行在下方。
justify-content: 專案在主軸上的對齊方式。
flex-start(預設值):左對齊
flex-end:右對齊
center: 居中
space-between:兩端對齊,項目之間的間隔都相等。
space-around:每個項目兩側的間隔相等。所以,專案之間的間隔比專案與邊框的間隔大一倍。
align-items: 定義項目在交叉軸上如何對齊。
flex-start:交叉軸的起點對齊。
flex-end:交叉軸的終點對齊。
center:交叉軸的中點對齊。
baseline: 項目的第一行文字的基線對齊。
stretch(預設值):如果項目未設定高度或設為auto,將佔滿整個容器的高度。
align-content: 定義了多根軸線的對齊方式。如果項目只有一根軸線,則該屬性不起作用。
flex-start:與交叉軸的起點對齊。
flex-end:與交叉軸的終點對齊。
center:與交叉軸的中點對齊。
space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。
space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
stretch(預設值):軸線佔滿整個交叉軸。
order: 定義專案的排列順序。數值越小,排列越前,預設為0。
flex-grow: 定義項目的放大比例,預設為0,即如果存在剩餘空間,也不放大。
如果所有項目的flex-grow屬性都是1,則它們將等分剩餘空間(如果有的話)。如果一個項目的flex-grow屬性為2,其他項目都是1,則前者佔據的剩餘空間將比其他項多一倍。
flex-shrink: 定義了項目的縮小比例,預設為1,即如果空間不足,該項目將縮小。
flex-basis: 在分配多餘空間之前,專案佔據的主軸空間。它可以設為跟width或height屬性一樣的值(例如350px),則項目將佔據固定空間。
align-self: 允許單一項目有與其他項目不一樣的對齊方式,可覆寫align-items屬性。預設值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同於stretch。此屬性可能取6個值,除了auto,其他都與align-items屬性完全一致。
flex:0 1 auto; flex:0 0 auto;
不放大不縮小的簡寫flex:none;
flex:auto;能放大能縮小 flex: 1 1 auto;
以上是彈性盒模型 flex 方法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!