⊗mkSpFxGr 86 of 128 menu

De greedy eigenschap van flex elementen in CSS

Stel we hebben nu twee flex-blokken, op een rij geplaatst. Deze blokken hebben een breedte van 100px, en hun ouder - 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; }

:

Zoals je ziet, is de totale breedte van onze elementen kleiner dan de breedte van de ouder, dus rechts blijft er vrije ruimte over.

Indien gewenst kan deze vrije ruimte proportioneel verdeeld worden tussen onze elementen. Dit gebeurt met behulp van de eigenschap flex-grow, die aan flex-elementen wordt toegewezen. De waarde van deze eigenschap is een dimensieloos getal.

Laten we in de praktijk bekijken hoe deze eigenschap werkt.

Voorbeeld

Momenteel hebben we twee flex-blokken met een breedte van 100px. Hun totale breedte van de elementen is 200px, en de breedte van de ouder is 300px. Dat betekent dat er vrije ruimte overblijft van 100px.

Als aan de elementen geen flex-grow is toegewezen, dan zien we simpelweg deze vrije ruimte. Als het wel is toegewezen, dan zal de werkelijke breedte van de elementen groter zijn dan de opgegeven - ze zullen proportioneel de vrije ruimte onderling verdelen en het toevoegen aan hun eigen breedte.

Stel bijvoorbeeld dat het eerste element een flex-grow heeft van 1, en het tweede - 3. Laten we berekenen welk deel van de vrije ruimte elk element krijgt.

Eerst moet het totale aantal eenheden flex-grow van al onze elementen worden berekend. Het eerste element heeft 1, en het tweede - 3. Dit betekent dat de som 4 is.

Laten we nu de 100px vrije ruimte delen door 4 en we krijgen dat 25px per eenheid flex-grow komt. Dit betekent dat aan het eerste element één eenheid flex-grow wordt toegevoegd, dat is 25px, en aan het tweede - drie eenheden, dat is 75px.

De breedte van het eerste element wordt 125px, en van het tweede - 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; }

:

Voorbeeld

Stel dat de breedte van de ouder nu 400px is, de breedte van het eerste element 200px, en de breedte van het tweede element - 100px. Dit betekent dat de vrije ruimte weer 100px is.

Laten we elk element een flex-grow toewijzen, gelijk aan 1. In totaal wordt dat 2, wat betekent dat de 100px vrije ruimte moet worden gedeeld door 2. Dit betekent dat 50px per eenheid greedy komt.

Aangezien alle elementen dezelfde waarde flex-grow hebben, wordt aan alle elementen dezelfde waarde van 50px toegevoegd. Dit betekent dat het eerste element 250px wordt, en het tweede wordt 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; }

:

Voorbeeld

Stel opnieuw dat de breedte van de ouder 400px is, de breedte van het eerste element 200px, en de breedte van het tweede element - 100px.

Laten we nu het eerste element instellen met flex-grow op waarde 3, en het tweede - op waarde 1. Dit betekent dat de greedy in totaal 4 is. Dan is één eenheid greedy gelijk aan 100px / 4 = 25px.

Aan het eerste element wordt 75px toegevoegd, en het wordt 275px, en aan het tweede - 25px, het wordt 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; }

:

Praktische opdrachten

In alle onderstaande opdrachten wordt aan u een stuk code getoond met flex-elementen die een breedte en flex-grow hebben. Bereken op basis van de getoonde code welke afmetingen elk van de elementen zal hebben. Voer vervolgens de code uit en controleer uw berekeningen door de werkelijke breedtes van de elementen te meten.

<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; }
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren