關於彈性布局flex屬性詳解

2021-08-03 16:07:26 字數 2341 閱讀 4403

flex 復合屬性,設定或檢索彈性盒模型物件的子元素如何分配空間。

由以下三個屬性組成:

<』 flex-grow 『>:

用來指定擴充套件比例,即剩餘空間是正值時此flex子項相對於flex容器裡其他flex子項能分配到空間比例,在flex屬性中該值如果被省略則預設為1

<』 flex-shrink 『>:

用來指定收縮比例,即剩餘空間是負值時此flex子項相對於flex容器裡其他flex子項能收縮的空間比例。在flex屬性中該值如果被省略則預設為1

在收縮的時候收縮比例會以伸縮基準值加權(希望大家深入理解這句話)

<』 flex-basis 『>:

用來指定伸縮基準值,即在根據伸縮比率計算出剩餘空間的分布之前,flex子項寬度的起始數值, 在「flex」屬性中該值如果被省略則預設為0

在flex屬性中該值如果被指定為auto,則伸縮基準值的計算值是自身的 width 值,如果自身的寬度沒有定義,則寬度取決於內容

快捷屬性值:

auto 1 1 auto 會根據主軸自動伸縮以占用所有剩餘空間

none 0 0 auto 在任何情況都不會發生伸縮

initial 0 1 auto 在有剩餘空間的時候也不會擴充套件,但在空間不足時會進行收縮(initial 設定該屬性的屬性值為初始值)

如果縮寫「flex: 1」, 則其計算值為「1 1 0」

如果縮寫「flex: auto」, 則其計算值為「1 1 auto」

如果「flex: none」, 則其計算值為「0 0 auto」

如果「flex: 0 auto」或者「flex: initial」, 則其計算值為「0 1 auto」,即「flex」初始值

示例:如下情況每個元素的計算寬是多少

code:

class="flex">

ali>

bli>

cli>

ul>

.flex

.flex :nth-child(1)

.flex :nth-child(2)

.flex :nth-child(3)

本例定義了父容器寬(即主軸寬)為800px,由於子元素設定了伸縮基準值flex-basis,相加300+200+400=900,那麼子元素將會溢位900-800=100px;

收縮因子 1 : 2 : 3

伸縮基準 300 : 200 : 400=3 : 2 : 4

收縮比例會以伸縮基準值加權

1*3 : 2*2: 3*4=3 : 4:12

於是我們可以計算a,b,c將被移除的溢位量是多少:

a被移除溢位量:(1/19)*100,即約等於16px

b被移除溢位量:(4/19)*100,即約等於21px

c被移除溢位量:(12/19)*100,即約等於63px

最後a,b,c的實際寬度分別為:300-16=284px, 200-21=179px, 400-63=337px

code:

class="flex">

ali>

bli>

cli>

ul>

.flex

.flex :nth-child(1)

.flex :nth-child(2)

.flex :nth-child(3)

本例定義了父容器寬(即主軸寬)為1500px,由於子元素設定了伸縮基準值flex-basis,相加300+200+400=900,那麼容器將有1500-900=600px的剩餘寬度;

於是我們可以計算a,b,c將被擴充套件量是多少:

a的擴充套件量:1/6*600,即約等於100px

b的擴充套件量:2/6*600,即約等於200px

c的擴充套件量:3/6*600,即約等於300px

最後a,b,c的實際寬度分別為:300+100=400px, 200+200=400px, 400+300=700px

從本例能看出:

當「flex-basis」在「flex」屬性中不為0時,「flex子項」將分配容器的剩餘空間(剩餘空間即等於容器寬度減去各項的伸縮基準值)

當「flex-basis」在「flex」屬性中等於0時,「flex子項」將分配容器的所有空間(因為各項的伸縮基準值相加等於0,剩餘空間等於容器寬度減去各項的伸縮基準值,即減0,最後剩餘空間值等於容器寬度),所以可以借助此特性,給各子項定義「flex: n」來進行按比例均分容器總寬度

flex彈性布局屬性詳解!

詳細看下flex彈性布局具體屬性 flex容器屬性詳解 flex direction row column 橫排 豎排 決定元素的排列方向 flex wrap nowrap wrap wrap reverse 翻轉 排列不下時如何排,預設排不下就壓縮進行排 flex flow是 flex direc...

關於彈性布局flex

hellozxy9527flex彈性布局的使用 關於彈性布局的簡介 在之前的學習中,對頁面布局有了大概的了解,發現許多頁面的布局都是遵循幾個盒子水平排列,或是豎直排列 豎直排列還好,水平方向則需要使用float屬性,在加上設定間隔等,繁多,且容易混淆。而flex彈性布局則良好的解決了這個問題。1.容...

Flex彈性布局基礎屬性

彈性布局可以簡潔 完整 響應式的實現各種頁面布局。螢幕和瀏覽器視窗大小變化也可以靈活調整布局 指定伸縮元素沿著主軸或者側軸,按照一定比例分配額外的空間,調整伸縮元素的大小 指定伸縮元素沿著主軸或者側軸,把伸縮元素額外空間分配到伸縮元素之前 之後和之間 控制元素在頁面上的布局方向 指定如何將垂直於元素...