⊗mkSpFxGr 86 of 128 menu

Požudnost flex elemenata u CSS

Pretpostavimo da trenutno imamo dva flex bloka, poređana u red. Ovim blokovima je zadata širina od 100px, a njihovom roditelju - 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; }

:

Kao što vidite, ukupna širina naših elemenata manja je od širine roditelja, pa s desne strane ostaje prazan prostor.

Po želji, ovaj prazan prostor se može proporcionalno podeliti između naših elemenata. To se postiže pomoću svojstva flex-grow, koje se zadaje flex elementima. Vrednost ovog svojstva je bezdimenzioni broj.

Hajde da u praksi pogledamo kako radi ovo svojstvo.

Primer

Trenutno imamo dva flex bloka sa širinom od 100px. Njihova ukupna širina elemenata 200px, a širina roditelja je 300px. Ispada da ostaje slobodan prostor od 100px.

Ako elementima nije zadata flex-grow, onda ćemo jednostavno videti ovaj slobodan prostor. Ako im je zadat, onda će stvarna širina elemenata biti veća od zadate - oni će proporcionalno podeliti slobodan prostor između sebe i dodati ga svojoj širini.

Neka za primer prvi element ima flex-grow jednak 1, a drugi - 3. Hajde da izračunamo, koji deo slobodnog prostora će dobiti svaki element.

Za početak je potrebno dobiti ukupni broj jedinica flex-grow svih naših elemenata. Kod prvog elementa je jednak 1, a kod drugog - 3. To znači da je u zbiru jednak 4.

Podelimo sada 100px slobodnog prostora na 4 i dobijamo da 25px dolazi na jednu jedinicu flex-grow. Ispaće, da će se prvom elementu dodati jedna jedinica flex-grow, odnosno 25px, a drugom - tri jedinice, odnosno 75px.

Širina prvog elementa će biti 125px, a drugog - 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; }

:

Primer

Neka sada širina roditelja bude 400px, širina prvog elementa 200px, a širina drugog elementa - 100px. Ispaće, da je slobodan prostor opet jednak 100px.

Dajmo svakom elementu da zada flex-grow, jednak 1. U zbiru će ispasti 2, odnosno 100px slobodnog prostora treba podeliti na 2. Ispaće da 50px dolazi na jednu jedinicu požudnosti.

Pošto svi elementi imaju istu vrednost flex-grow, onda će se svim elementima dodati ista vrednost od 50px. To znači, da će prvi element postati 250px, i a drugi će postati 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; }

:

Primer

Neka opet širina roditelja bude 400px, širina prvog elementa 200px, a širina drugog elementa - 100px.

Hajde sada prvom elementu da postavimo flex-grow na vrednost 3, a drugom - na vrednost 1. Ispaće da je požudnost u zbiru jednaka 4. Tada je jedna jedinica požudnosti jednaka 100px / 4 = 25px.

Prvom elementu će se dodati 75px, i on će postati 275px, a drugom - 25px, on će postati 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; }

:

Praktični zadaci

U svim zadacima ispod biće vam predstavljen određeni kod sa flex elementima, koji imaju širinu i flex-grow. Na osnovu predstavljenog koda izračunajte, koje dimenzije će imati svaki od elemenata. Zatim pokrenite kod i proverite vaše proračune, izmerivši stvarne širine elemenata.

<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; }
Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij