⊗mkSpFxSFC 96 of 128 menu

Régulation de la compression des blocs flex en CSS

Par défaut, des morceaux sont pincés de tous les éléments, proportionnellement à la largeur de l'élément. Cependant, il est possible de faire en sorte que certains éléments voient des morceaux plus grands ou plus petits pincés. Pour cela, il existe une propriété spéciale flex-shrink.

Cette propriété représente un certain poids, par lequel la largeur de l'élément sera multipliée lors du calcul du morceau à pincer selon la formule déjà mentionnée ci-dessus. Par exemple, si la largeur de l'élément est de 200px, et que son flex-shrink est de 3, alors la largeur pondérée (c'est-à-dire multipliée par le poids) de l'élément sera de :

200px * 3 = 600px

La formule prenant en compte flex-shrink aura la forme suivante : espace libre négatif * (largeur pondérée de l'élément / somme de toutes les largeurs pondérées des éléments).

Regardons un exemple. Supposons que nous ayons 4 éléments. Supposons que la largeur du premier élément soit de 400px, et que son flex-shrink soit de 2, la largeur des autres éléments est de 200px, et leur flex-shrink est de 1. Supposons que la largeur du parent soit de 900px.

La largeur totale des éléments est de :

400px + 3 * 200px = 1000px

L'espace libre négatif sera de :

1000px - 900px = 100px

La largeur pondérée totale des éléments est de :

400px * 2 + 200px * 1 + 200px * 1 + 200px * 1 = 1400px

La largeur pondérée du premier élément est de :

400px * 2 = 800px

Le morceau suivant sera pincé du premier élément :

100px * (800px / 1400px) = 100px * 0.57 = 57.14px

La largeur de l'élément sera de :

400px - 57.14px = 342.86px ~ 343px

La largeur pondérée de chacun des autres éléments est de :

200px * 1 = 200px

Le morceau suivant sera pincé de chaque élément :

100px * (200px / 1400px) = 100px * 0.142 = 14.2px

La largeur de l'élément sera de :

200px - 14.2px = 185.8px ~ 186px

Implémentez les blocs décrits et vérifiez par mesure que la largeur des éléments est bien égale à celle que nous avons calculée.

Calculez la largeur des blocs, puis vérifiez les calculs par mesure :

<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: 200px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-shrink: 2; } .elem2 { width: 100px; flex-shrink: 1; } .elem3 { width: 100px; flex-shrink: 1; }

Calculez la largeur des blocs, puis vérifiez les calculs par mesure :

<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: 200px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 100px; flex-shrink: 3; } .elem2 { width: 100px; flex-shrink: 2; } .elem3 { width: 100px; flex-shrink: 1; }

Calculez la largeur des blocs, puis vérifiez les calculs par mesure :

<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: 500px; height: 200px; border: 1px solid red; } .child { height: 50px; border: 1px solid green; } .elem1 { width: 300px; flex-shrink: 3; } .elem2 { width: 200px; flex-shrink: 2; } .elem3 { width: 200px; flex-shrink: 1; } .elem4 { width: 200px; flex-shrink: 1; }
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser