Ničelna požrešnost flex elementov v CSS
Če je flex-grow enak nič za kakšen
element, potem ta element ne bo sodeloval
v porazdelitvi prostega prostora.
Privzeto je požrešnost ravno
ničelna vrednost in zato elementi brez določenega
flex-grow ne delijo prostega prostora
med seboj.
Za primer naredimo kakšen
izračun. Recimo, da imamo tri flex-elemente,
vsak s širino 100px. Naj prvi
element nima flex-grow (ali je
enak 0), drugi element ima flex-grow,
enak 2, tretji pa - enak 3.
Naj bo širina starša enaka 500px.
Takrat bo prosti prostor enak
200px, na eno enoto flex-grow
pa bo pripadlo . Izkazalo se bo, da širina
prvega elementa tako ostane 200px / 5 = 40px100px,
ker ne sodeluje v porazdelitvi,
širina drugega bo , širina tretjega pa - 100px + 2 * 40px
= 180px.
100px
+ 3 * 40px = 220px
Praktične naloge
V vseh spodnjih nalogah vam bo predstavljena
določena koda s flex-elementi, ki imajo
širino in flex-grow. Glede na predstavljeno
kodo izračunajte, kakšne dimenzije bo imel
vsak od elementov. Nato zaženite kodo
in preverite svoje izračune z merjenjem dejanskih
širin elementov.
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem3">3</div>
</div>
.parent {
display: flex;
width: 500px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 200px;
flex-grow: 0;
}
.elem2 {
width: 100px;
flex-grow: 1;
}
.elem3 {
width: 100px;
flex-grow: 1;
}
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem3">3</div>
</div>
.parent {
display: flex;
width: 900px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 300px;
flex-grow: 0;
}
.elem2 {
width: 200px;
flex-grow: 3;
}
.elem3 {
width: 100px;
flex-grow: 2;
}
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem3">3</div>
<div class="child elem4">4</div>
</div>
.parent {
display: flex;
width: 700px;
height: 200px;
border: 1px solid red;
}
.child {
height: 50px;
border: 1px solid green;
}
.elem1 {
width: 200px;
flex-grow: 0;
}
.elem2 {
width: 200px;
flex-grow: 0;
}
.elem3 {
width: 100px;
flex-grow: 1;
}
.elem4 {
width: 100px;
flex-grow: 1;
}