АКЦЫЯ: бясплатныя месячныя курсы па стварэнні сайтаў
на выбар: вёрстка, JavaScript, PHP, Python або фрэймворкі. Сёння апошні дзень для запісу! Націскай!
204 of 313 menu

Уласцівасць flex-grow

Уласцівасць flex-grow вызначае то, на колькі асобны flex-блок можа быць больш за суседнія элементы, калі гэта неабходна.

Напрыклад, калі ўсе flex-блокі ўнутры flex-кантэйнера маюць flex-grow:1, то яны будуць аднолькавага памеру. Калі адзін з іх мае flex-grow:2, то ён будзе ў 2 разы больш, чым усе астатнія.

Калі сумарная шырыня элементаў менш за шырыню бацькі, таму справа застаецца пустое месца. Пры жаданні гэта пустое месца можна прапарцыйна падзяліць паміж нашымі элементамі. Гэта робіцца з дапамогай уласцівасці flex-grow, якая задаецца флекс-элементам. Значэннем гэтай уласцівасці служыць бязразмернае лік.

Ужываецца да: канкрэтнага flex блока.

Даная ўласцівасць уваходзіць як складовая частка ў уласцівасць-скарачэнне flex.

Сінтаксіс

селектар { flex-grow: дадатныя лікі; }

Значэнне па змаўчанні: 0.

Прыклад

Зараз у нас два флекс-блокі з шырынёй у 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-direction,
    якая задае напрамак восей flex блокаў
  • уласцівасць justify-content,
    якая задае выраўноўванне па галоўнай восі
  • уласцівасць align-items,
    якая задае выраўноўванне па папярочнай восі
  • уласцівасць flex-wrap,
    якая шматрадковасць flex блокаў
  • уласцівасць flex-flow,
    скарачэнне для flex-direction і flex-wrap
  • уласцівасць order,
    якая задае парадак flex блокаў
  • уласцівасць align-self,
    якая задае выраўноўванне аднаго блока
  • уласцівасць flex-basis,
    якая задае памер канкрэтнага flex блока
  • уласцівасць flex-shrink,
    якая задае сціскальнасць flex блокаў
  • уласцівасць flex,
    скарачэнне для flex-grow, flex-shrink і flex-basis
byenru