A flex elemek nulla növekedési tényezője CSS-ben
Ha egy elem flex-grow értéke nulla, akkor az az elem nem vesz részt a szabad tér elosztásában. Alapértelmezetten a növekedési tényező éppen nulla értékű, ezért a megadott flex-grow nélküli elemek nem osztják fel egymás között a szabad teret.
Végezzünk például egy számítást. Tegyük fel, hogy három flex elemünk van, mindegyik 100px szélességgel. Az első elemnek ne legyen flex-grow értéke (vagy az 0), a második elem flex-grow értéke 2, a harmadiké pedig 3 legyen.
Tegyük fel, hogy a szülő szélessége 500px. Ekkor a szabad tér 200px lesz, és egy flex-grow egységre jut. Így az első elem szélessége 200px / 5 = 40px100px marad, mivel nem vesz részt az elosztásban, a második elem szélessége , a harmadiké pedig 100px + 2 * 40px = 180px lesz.
100px + 3 * 40px = 220px
Gyakorlati feladatok
Az alábbi feladatokban egy kódot fog látni flex elemekkel, amelyeknek megadott a szélessége és a flex-grow értéke. A megadott kód alapján számolja ki, milyen méretei lesznek az egyes elemeknek. Ezután futtassa a kódot, és ellenőrizze számításait az elemek tényleges szélességének megmérésével.
<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;
}