⊗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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць