⊗mkSpFxGr 86 of 128 menu

Пожудљивост флекс елемената у CSS-у

Претпоставимо да сада имамо два флекс блока, поређана у ред. Ови блокови имају задату ширину од 100px, а њиховом родитељу - 300px:

<div class="parent"> <div class="child">1</div> <div class="child">2</div> </div> .parent { display: flex; width: 300px; height: 200px; border: 1px solid red; } .child { width: 100px; height: 100px; border: 1px solid green; }

:

Као што видите, укупна ширина наших елемената је мања од ширине родитеља, па са десне стране остаје празан простор.

По жељи, овај празан простор се може пропорционално поделити између наших елемената. То се ради помоћу својства flex-grow, које се задаје флекс елементима. Вредност овог својства је бездимензиони број.

Да видимо у пракси како функционише ово својство.

Пример

Сада имамо два флекс блока са ширином од 100px. Њихова укупна ширина је 200px, а ширина родитеља је 300px. Излази да остаје слободан простор од 100px.

Ако елементима није задат flex-grow, онда ћемо једноставно видети тај слободан простор. Ако им је задат, онда ће стварна ширина елемената бити већа од задате - они ће пропорционално поделити слободан простор међу собом и додати га својој ширини.

Рецимо за пример да први елемент има flex-grow једнак 1, а други - 3. Хајде да израчунамо, који део слободног простора ће добити сваки елемент.

Прво треба да добијемо укупан број јединица flex-grow свих наших елемената. Код првог елемента једнак је 1, а код другог - 3. То значи да је у збиру једнак 4.

Поделимо сада 100px слободног простора са 4 и добијамо да 25px отпада на једну јединицу flex-grow. Излази, да ће се првом елементу додати једна јединица flex-grow, то јест 25px, а другом - три јединице, то јест 75px.

Ширина првог елемента ће бити 125px, а другог - 175px:

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> </div> .parent { display: flex; width: 300px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 3; }

:

Пример

Рецимо сада да је ширина родитеља једнака 400px, ширина првог елемента 200px, а ширина другог елемента - 100px. Излази, да је слободан простор поново једнак 100px.

Хајде да сваком елементу задамо flex-grow, једнак 1. У збиру ће бити 2, то јест 100px слободног простора треба поделити са 2. Излази да 50px отпада на једну јединицу пожудљивости.

Како сви елементи имају исту вредност flex-grow, онда ће се свим елементима додати иста вредност од 50px. То значи, да ће први елемент постати 250px, и а други ће постати 150px:

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> </div> .parent { display: flex; width: 400px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 1; }

:

Пример

Рецимо поново да је ширина родитеља једнака 400px, ширина првог елемента 200px, а ширина другог елемента - 100px.

Хајде сада првом елементу да поставимо flex-grow на вредност 3, а другом - на вредност 1. Излази да је пожудљивост у збиру једнака 4. Онда једна јединица пожудљивости једнака 100px / 4 = 25px.

Првом елементу ће се додати 75px, и он ће постати 275px, а другом - 25px, он ће постати 125px:

<div class="parent"> <div class="child elem1">1</div> <div class="child elem2">2</div> </div> .parent { display: flex; width: 400px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 3; } .elem2 { width: 100px; flex-grow: 1; }

:

Практични задаци

У свим задацима испод биће вам представљен одређени код са флекс елементима који имају ширину и 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: 3; } .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: 700px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 2; } .elem3 { width: 200px; flex-grow: 3; }
<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: 100px; flex-grow: 1; } .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 class="child elem4">4</div> </div> .parent { display: flex; width: 1000px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 200px; flex-grow: 1; } .elem2 { width: 100px; flex-grow: 2; } .elem3 { width: 100px; flex-grow: 4; } .elem4 { width: 100px; flex-grow: 3; }
Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј