Propriété flex-shrink
La propriété flex-shrink détermine
à quel point un bloc flex sera réduit par rapport
aux éléments voisins à l'intérieur du conteneur flex
en cas de manque d'espace libre.
Par exemple, si tous les blocs flex à l'intérieur d'un conteneur flex
ont flex-shrink:1, ils auront
la même taille. Si l'un d'eux a
flex-shrink:2, il sera 2
fois plus petit que tous les autres.
S'applique à : un bloc flex spécifique.
Cette propriété fait partie intégrante de la propriété raccourcie
flex.
Syntaxe
sélecteur {
flex-shrink: nombre positif;
}
Valeur par défaut : 1.
Exemple
Supposons que nous ayons 3 éléments. La largeur de chacun d'eux
est de 200px et leur total est de 600px,
ce qui est supérieur à la largeur du conteneur parent, qui
est de 350px :
<div class="parent">
<div class="child elem1">1</div>
<div class="child elem2">2</div>
<div class="child elem2">3</div>
</div>
.parent {
display: flex;
width: 350px;
height: 200px;
border: 1px solid red;
}
.child {
width: 200px;
height: 50px;
border: 1px solid green;
}
.elem1 {
flex-shrink: 1;
}
.elem2 {
flex-shrink: 2;
}
.elem3 {
flex-shrink: 3;
}
:
Calculons l'espace libre négatif avec la formule :
600px - 350px = 250px
La largeur pondérée totale des éléments
en tenant compte des valeurs de la propriété flex-shrink
pour chaque élément sera de :
200px * 1 + 200px * 2 + 200px * 3 = 1200px
Déterminons maintenant de combien sera réduit le premier élément :
250px * 1 (flex-shrink) * 200 (width) / 1200 = 41,6px
Le deuxième élément :
250px * 2 (flex-shrink) * 200 (width) / 1200 = 83,3px
Le troisième élément :
250px * 3 (flex-shrink) * 200 (width) / 1200 = 125px
Il en ressort que le troisième élément, dont la valeur
flex-shrink est 3, sera réduit davantage
que les autres éléments.
Voir aussi
-
la propriété
flex-direction,
qui définit la direction des axes des blocs flex -
la propriété
justify-content,
qui définit l'alignement le long de l'axe principal -
la propriété
align-items,
qui définit l'alignement le long de l'axe transversal -
la propriété
flex-wrap,
qui définit le retour à la ligne des blocs flex -
la propriété
flex-flow,
raccourci pour flex-direction et flex-wrap -
la propriété
order,
qui définit l'ordre des blocs flex -
la propriété
align-self,
qui définit l'alignement d'un seul bloc -
la propriété
flex-basis,
qui définit la taille d'un bloc flex spécifique -
la propriété
flex-grow,
qui définit l'expansion des blocs flex -
la propriété
flex,
raccourci pour flex-grow, flex-shrink et flex-basis