⊗mkSpFxGr 86 of 128 menu

Flex-grow flex elementov v CSS

Predpokladajme, že máme dva flex bloky usporiadané vedľa seba. Týmto blokom je nastavená šírka na 100px a ich rodičovskému elementu - 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; }

:

Ako vidíte, celková šírka našich elementov je menšia ako šírka rodiča, preto na pravej strane zostáva voľný priestor.

V prípade potreby je možné tento voľný priestor proporcionálne rozdeliť medzi naše elementy. To sa robí pomocou vlastnosti flex-grow, ktorá sa nastavuje flex elementom. Hodnotou tejto vlastnosti je bezrozmerné číslo.

Pozrime sa v praxi, ako táto vlastnosť funguje.

Príklad

Teraz máme dva flex bloky so šírkou 100px. Ich celková šírka 200px, a šírka rodiča - 300px. To znamená, že zostáva voľný priestor v 100px.

Ak elementom nie je nastavený flex-grow, jednoducho uvidíme tento voľný priestor. Ak je nastavený, tak skutočná šírka elementov bude väčšia ako zadaná - proporcionálne si rozdelia voľný priestor medzi sebou a pridajú ho k svojej šírke.

Napríklad, nech prvý element má flex-grow rovný 1 a druhý - 3. Poďme vypočítať, akú časť voľného priestoru získa každý element.

Najprv je potrebné zistiť celkový počet jendotiek flex-grow všetkých našich elementov. Prvý element má hodnotu 1 a druhý - 3. To znamená, že súčet je 4.

Teraz vydeľme 100px voľného priestoru 4 a dostaneme, že na jednu jednotku flex-grow pripadá 25px. To znamená, že k prvému elementu sa pridá jedna jednotka flex-grow, teda 25px, a k druhému - tri jednotky, teda 75px.

Šírka prvého elementu bude 125px, a druhého - 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; }

:

Príklad

Nech je teraz šírka rodiča rovná 400px, šírka prvého elementu 200px a šírka druhého elementu - 100px. To znamená, že voľný priestor je opäť rovný 100px.

Nastavme každému elementu flex-grow, rovný 1. Súčet bude 2, to znamená, že 100px voľného priestoru je potrebné rozdeliť na 2. To znamená, že na jednu jednotku flex-grow pripadá 50px.

Pretože všetky elementy majú rovnakú hodnotu flex-grow, ku všetkým elementom sa pridá rovnaká hodnota 50px. To znamená, že prvý element bude mať 250px a druhý bude mať 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; }

:

Príklad

Nech je opäť šírka rodiča rovná 400px, šírka prvého elementu 200px a šírka druhého elementu - 100px.

Nastavme teraz prvému elementu flex-grow na hodnotu 3 a druhému - na hodnotu 1. Súčet flex-grow bude 4. Jedna jednotka flex-grow sa teda rovná 100px / 4 = 25px.

K prvému elementu sa pridá 75px, a bude mať 275px, a k druhému - 25px, bude mať 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; }

:

Praktické úlohy

Vo všetkých úlohách nižšie vám bude predstavený nejaký kód s flex elementmi, ktoré majú šírku a flex-grow. Na základe predstaveného kódu vypočítajte, aké rozmery bude mať každý z elementov. Potom spustite kód a skontrolujte svoje výpočty odmeraním skutočných šírok elementov.

<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; }
Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť