Нулявая жаднасць флекс элементаў у CSS
Калі flex-grow роўны нулю для якога-небудзь
элемента, то гэты элемент не будзе ўдзельнічаць
у размеркаванні свабоднай прасторы.
Па змаўчанні жаднасць якраз-такі мае
нулявое значэнне і таму элементы без зададзенага
flex-grow не дзяляць свабодную прастору
паміж сабой.
Давайце для прыкладу зробім які-небудзь
разлік. Хай у нас ёсць тры флекс-элементы,
кожны з шырынёй у 100px. Хай першы
элемент не мае flex-grow (або яно
роўна 0), другі элемент мае flex-grow,
роўнае 2, а трэці - роўнае 3.
Хай шырыня бацькі роўная 500px.
Тады свабодная прастора будзе роўная
200px, а на адну адзінку flex-grow
прыйдзецца . Атрымаецца, што шырыня
першага элемента так і застанецца 200px / 5 = 40px100px,
так як ён не ўдзельнічае ў размеркаванні,
шырыня другога будзе , а шырыня трэцяга - 100px + 2 * 40px
= 180px.
100px
+ 3 * 40px = 220px
Практычныя задачы
У ўсіх задачах ніжэй вам будзе прадстаўлены
нейкі код з флекс-элементамі, якія маюць
шырыню і flex-grow. Па прадстаўленым
кодзе разлічыце, якія памеры будзе мець
кожны з элементаў. Затым запусціце код
і праверце вашы разлікі, вымераўшы рэальныя
шырыні элементаў.
<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;
}