⊗mkSpFxGr 86 of 128 menu

Flex elements grådighed i CSS

Lad os sige, at vi har to flex-blokke, arrangeret i en række. Disse blokke har en bredde på 100px, og deres forælder - 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; }

:

Som du kan se, er den samlede bredde af vores elementer mindre end forælderens bredde, så der er ledig plads til højre.

Hvis ønsket, kan denne ledige plads forholdsmæssigt fordeles mellem vores elementer. Dette gøres ved hjælp af egenskaben flex-grow, som tildeles flex-elementerne. Værdien af denne egenskab er et dimensionsløst tal.

Lad os se i praksis, hvordan denne egenskab fungerer.

Eksempel

Lige nu har vi to flex-blokke med en bredde på 100px. Deres samlede bredde af elementerne 200px, og forælderens bredde - 300px. Det betyder, at der er ledig plads på 100px.

Hvis elementerne ikke har flex-grow, vil vi simpelthen se denne ledige plads. Hvis de derimod har det, vil den faktiske bredde af elementerne være større end den angivne - de vil forholdsmæssigt fordele den ledige plads mellem sig selv og tilføje den til deres bredde.

Lad os for eksempel sige, at det første element har flex-grow lig med 1, og det andet - 3. Lad os beregne, hvilken del af den ledige plads hvert element vil modtage.

Først skal vi finde det samlede antal enheder af flex-grow for alle vores elementer. For det første element er det 1, og for det andet - 3. Det betyder, at summen er 4.

Lad os nu dividere 100px ledig plads med 4 og få, at 25px falder på en enhed af flex-grow. Det vil sige, at til det første element vil der blive tilføjet en enhed af flex-grow, det vil sige 25px, og til det andet - tre enheder, det vil sige 75px.

Bredden af det første element vil blive 125px, og det andet - 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; }

:

Eksempel

Lad os nu sige, at forælderens bredde er 400px, bredden af det første element er 200px, og bredden af det andet element - 100px. Det vil sige, at den ledige plads igen er 100px.

Lad os give hvert element flex-grow, lig med 1. I alt bliver det 2, det vil sige, at 100px ledig plads skal deles med 2. Det vil sige, at 50px falder på en enhed af grådighed.

Da alle elementer har den samme værdi af flex-grow, vil der blive tilføjet den samme værdi på 50px til alle elementer. Det betyder, at det første element vil blive 250px, og det andet vil blive 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; }

:

Eksempel

Lad os igen sige, at forælderens bredde er 400px, bredden af det første element er 200px, og bredden af det andet element - 100px.

Lad os nu sætte flex-grow for det første element til værdien 3, og for det andet - til værdien 1. Det vil sige, at grådigheden i alt er 4. Så er en enhed af grådighed lig med 100px / 4 = 25px.

Til det første element vil der blive tilføjet 75px, og det vil blive 275px, og til det andet - 25px, det vil blive 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; }

:

Praktiske opgaver

I alle opgaver nedenfor vil du blive præsenteret for noget kode med flex-elementer, der har bredde og flex-grow. Baseret på den præsenterede kode, skal du beregne, hvilke dimensioner hvert af elementerne vil have. Kør derefter koden og kontroller dine beregninger ved at måle de faktiske bredder af elementerne.

<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; }
Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis