彈性盒模型 flex 方法總結

來源:互聯網
上載者:User


彈性布局

2009年,W3C 提出了一種新的方案—-Flex 布局(彈性布局),可以簡便、完整、響應式地實現各種頁面配置。

傳統盒子模型:
一般的布局我們都是用的盒子模型,通過浮動 定位來布局。
行元素、行內塊元素不換行,塊元素獨佔一行的。 利用浮動可以使塊元素橫排。
但是某些特殊的布局,它們很難實現。比如 垂直置中。

設定彈性盒子之後,盒子內部的元素沒有行元素與塊元素之分,float會失效。

採用flex布局的元素,叫做flex容器,簡稱容器
容器內的所有子項目叫做flex項目,簡稱項目

flex相容性

除了IE 其他瀏覽器都能比較好的相容

容器的屬性:

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;

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.