Sobes.tech
Junior

Comment fonctionnent les propriétés flex-grow et flex-shrink ?

sobes.tech IA

Réponse de l'IA

flex-grow et flex-shrink déterminent comment les éléments ajustent leur taille de manière adaptative à l’intérieur du conteneur flex, lorsqu’il y a de l’espace libre ou insuffisant, respectivement.

flex-grow - détermine le coefficient selon lequel un élément doit augmenter lorsqu’il y a de l’espace libre dans le conteneur. La valeur par défaut est 0 (l’élément ne s’étire pas). Si plusieurs éléments ont flex-grow supérieur à 0, l’espace libre est réparti entre eux proportionnellement à leurs valeurs de flex-grow.

.item {
  flex-grow: 1; /* L’élément utilisera tout l’espace libre disponible */
}

flex-shrink - détermine le coefficient selon lequel un élément doit se compresser lorsqu’il y a un espace insuffisant dans le conteneur. La valeur par défaut est 1 (l’élément se compresse proportionnellement aux autres éléments qui se compressent). Une valeur de 0 empêche la compression de l’élément.

.item {
  flex-shrink: 0; /* L’élément ne se comprimera pas */
}

Avec flex-basis, ils forment la propriété abrégée flex: flex: <flex-grow> <flex-shrink> <flex-basis>.

Exemple d’utilisation:

<div class="container">
  <div class="item item-1">Item 1</div>
  <div class="item item-2">Item 2</div>
</div>
.container {
  display: flex;
  width: 400px; /* Exemple de largeur fixe du conteneur */
}

.item {
  flex-basis: 100px; /* Taille de base de tous les éléments */
}

.item-1 {
  flex-grow: 1; /* Item 1 utilisera l’espace libre */
}

.item-2 {
  flex-shrink: 0; /* Item 2 ne sera pas comprimé */
}

Si le conteneur est plus large que 200px (100px + 100px), item-1 occupera tout l’espace libre restant. Si le conteneur fait déjà 200px, item-2 conservera sa taille de base de 100px, et item-1 sera comprimé.