⊗mkSpFxGr 86 of 128 menu

La proprietà flex-grow degli elementi in CSS

Supponiamo di avere due blocchi flessibili, allineati in una riga. A questi blocchi è assegnata una larghezza di 100px, e al loro genitore - 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; }

:

Come puoi vedere, la larghezza totale dei nostri elementi è inferiore alla larghezza del genitore, quindi sulla destra rimane spazio vuoto.

Se lo si desidera, questo spazio vuoto può essere diviso proporzionalmente tra i nostri elementi. Questo viene fatto utilizzando la proprietà flex-grow, assegnata agli elementi flessibili. Il valore di questa proprietà è un numero adimensionale.

Vediamo in pratica come funziona questa proprietà.

Esempio

Attualmente abbiamo due blocchi flessibili con una larghezza di 100px. La loro larghezza totale 200px, mentre la larghezza del genitore è 300px. Risulta che rimane uno spazio libero di 100px.

Se agli elementi non è assegnato flex-grow, allora vedremo semplicemente questo spazio libero. Se invece è assegnato, allora la larghezza reale degli elementi sarà maggiore di quella impostata - essi divideranno proporzionalmente lo spazio libero tra loro e lo aggiungeranno alla propria larghezza.

Ad esempio, supponiamo che il primo elemento abbia flex-grow uguale a 1, e il secondo - 3. Calcoliamo quale parte dello spazio libero otterrà ogni elemento.

Per prima cosa è necessario ottenere la quantità totale di unità flex-grow di tutti i nostri elementi. Per il primo elemento è 1, e per il secondo - 3. Ciò significa che in totale è 4.

Ora dividiamo 100px di spazio libero per 4 e otteniamo che 25px spettano a una singola unità di flex-grow. Risulta che al primo elemento verrà aggiunta una unità di flex-grow, cioè 25px, e al secondo - tre unità, cioè 75px.

La larghezza del primo elemento risulterà 125px, e del secondo - 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; }

:

Esempio

Supponiamo ora che la larghezza del genitore sia 400px, la larghezza del primo elemento 200px, e la larghezza del secondo elemento - 100px. Risulta che lo spazio libero è ancora 100px.

Assegniamo a ogni elemento flex-grow, uguale a 1. In totale sarà 2, cioè 100px di spazio libero deve essere diviso per 2. Risulterà che 50px spettano a una unità di flex-grow.

Poiché tutti gli elementi hanno lo stesso valore di flex-grow, a tutti gli elementi verrà aggiunto lo stesso valore di 50px. Ciò significa che il primo elemento diventerà 250px, e il secondo diventerà 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; }

:

Esempio

Supponiamo ancora che la larghezza del genitore sia 400px, la larghezza del primo elemento 200px, e la larghezza del secondo elemento - 100px.

Ora impostiamo per il primo elemento flex-grow al valore 3, e per il secondo - al valore 1. Risulterà che il flex-grow totale è 4. Allora una unità di flex-grow è uguale a 100px / 4 = 25px.

Al primo elemento verranno aggiunti 75px, e diventerà 275px, mentre al secondo - 25px, diventerà 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; }

:

Compiti pratici

In tutti i compiti qui sotto ti verrà presentato del codice con elementi flessibili, aventi larghezza e flex-grow. In base al codice presentato, calcola quali dimensioni avrà ciascuno degli elementi. Quindi esegui il codice e verifica i tuoi calcoli, misurando le larghezze reali degli elementi.

<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; }
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta