[英]Understanding flex-grow
我有 3 個 div,如果我給前兩個 div 賦予flex: 0.5
,如果我給了flex-wrap: wrap
,最后一個 div 應該移動到下一行。 如果我錯了,請糾正。
以下是我的 html / css:
.parent { display: flex; height: 100px; background-color: red; flex-wrap: wrap; }.child-1 { background-color: green; flex: 0.5; }.child-2 { background-color: yellow; flex: 0.5; }.child-3 { background-color: pink; }
<div class="parent"> <div class="child-1">LOREN IPSUM LOREN IPSUM</div> <div class="child-2">LOREN IPSUMLOREN IPSUMLOREN IPSUM</div> <div class="child-3">LOREN IPSUMLOREN IPSUM</div> </div>
請為此檢查JSFiddle 。
提前致謝。
flex-grow
屬性旨在在flex容器中分配容器中的可用空間。
它不適用於直接或精確調整柔性物品的尺寸。
從規格 :
flex-grow
...確定當分配正空閑空間時,flex項目相對於flex容器中其余flex項目的增長量。
因此, flex-grow
不會強制項目包裝。 以下是flex-grow: 1000
示例flex-grow: 1000
: demo
要定義彈性項目的長度,請使用width
, height
或flex-basis
。
flex-grow: 0.5
當您應用flex:0.5
,您正在使用flex
速記屬性來說明:
flex-grow: 0.5
flex-shrink: 1
flex-basis: 0
flex-grow
組件代表一定比例。 在這種情況下,它告訴flex項目消耗容器中一半的可用空間相對於其兄弟姐妹的flex-grow
因子 。
因此,例如,如果容器的width: 600px
並且三個div的總寬度為450px,則這將在可用空間中留下150px( 演示 )。
如果每個項目都有flex-grow: 1
,則每個項目將消耗額外空間的50px,每個項目將計算width: 200px
( 演示 )。
但是在你的代碼中,有兩個項目有flex-grow: 0.5
,最后一個項目有flex-grow: 0
,所以這里是它如何分解:
- div#1將獲得75px(可用空間的一半)
- div#2將獲得75px(可用空間的一半)
- div#3將獲得0(因為它的
flex-grow
為0)
這些是現在的計算值:
- div#1 =
width: 225px
- div#2 =
width: 225px
- div#3 =
width: 150px
.parent { display: flex; flex-wrap: wrap; height: 100px; background-color: red; width: 600px; } .parent > div { flex-basis: 150px; } .child-1 { flex: 0.5; background-color: green; } .child-2 { flex: 0.5; background-color: yellow; } .child-3 { background-color: pink; }
<div class="parent"> <div class="child-1">LOREN IPSUM LOREN IPSUM</div> <div class="child-2">LOREN IPSUMLOREN IPSUMLOREN IPSUM</div> <div class="child-3"> LOREN IPSUMLOREN IPSUM</div> </div>
注意:問題的真相是,因為div#1和#2具有相同的flex-grow
因子,而div#3的因子為0,所以該值無關緊要。 你可以使用任何數字來代替0.5。 只要它在兩個div中都相同,項目將計算為225px,因為比例將是相同的。
更多信息:
Flex = 0.5 意味着,您有 flex-grow = 0.5、flex-shrink = 1 和 flex-basis = 0,您正在為彈性項目分配可用空間。
假設您有一個寬度為 100vw 的容器(假設 div 元素),其中包含兩個靈活的項目(div 元素),每個 40vw。 所以你的兩個 div 元素消耗的總寬度將等於 80vw,剩余的可用空間將是 20vw。 現在,您已經為兩個 div 元素中的每一個設置了 flex = 0.5。 所以,每個 div 元素都會增長 20vw/2 = 10vw 以完全占據容器的空閑空間。
再考慮一個具有 3 個 div 元素的場景,寬度為 30vw 的 div1,寬度為 10vw 的 div2 和寬度為 25vw 的 div3。 3 個 div 元素消耗的總寬度 = 30 + 10 + 25 = 65vw。 總可用空間 = 100 - 65 = 35vw。
現在,每個 div 元素都設置為 flex = 0.3,所以每個元素都會增長 35/3 =~ 11.66vw
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.