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

csssé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 :

html<div class="parent">
  <div class="child elem1">1</div>
  <div class="child elem2">2</div>
  <div class="child elem2">3</div>
</div>
css.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