Retour • 28/01/2025
Flex-shrink en CSS - Comment gérer la réduction des éléments flex comme un pro
Écris par Melvyn Malherbe le 28/01/2025
Retour • 28/01/2025
Écris par Melvyn Malherbe le 28/01/2025
Tu galères à comprendre pourquoi tes éléments flex se réduisent de manière bizarre ? Tu veux savoir comment contrôler précisément la réduction de tes éléments quand l'espace manque ? Tu es au bon endroit !
Dans cet article, on va plonger dans flex-shrink, la propriété CSS qui gère la réduction des éléments flex. Je vais t'expliquer son fonctionnement avec des exemples concrets et interactifs.
flex-shrink est comme le petit frère opposé de flex-grow. Alors que flex-grow définit comment les éléments grandissent, flex-shrink définit comment ils rétrécissent quand il n'y a pas assez d'espace.
La valeur par défaut est 1, ce qui signifie que tous les éléments vont rétrécir de manière égale. Plus la valeur est élevée, plus l'élément va rétrécir rapidement.
Imagine que tu as trois boîtes dans un conteneur. Quand l'espace est suffisant, tout va bien. Mais que se passe-t-il quand l'espace se réduit ?
Dans cet exemple :
flex-shrink: 2 - elle rétrécit deux fois plus viteflex-shrink: 1 - elles rétrécissent normalementLe calcul de flex-shrink est un peu plus complexe que flex-grow. Il prend en compte :
flex-shrinkPrenons un exemple plus concret :
Dans cet exemple :
flex-shrink plus élevé (3)flex-shrink normal (1)Quand l'espace manque :
flex-shrink plus élevéL'erreur la plus courante est de penser que flex-shrink: 0 est mauvais. En fait, c'est super utile ! Ça permet d'empêcher un élément de rétrécir.
Regarde cet exemple de navbar avec des boutons qui ne doivent pas rétrécir :
Ici :
flex-shrink: 0 pour garder leur tailleflex-shrink: 1 pour s'adapter à l'espace disponibleComme pour flex-grow, la meilleure approche est souvent d'utiliser le shorthand flex :
/* Élément qui ne rétrécit jamais */
.element {
flex: 0 0 auto;
}
/* Élément qui rétrécit normalement */
.element {
flex: 1 1 auto;
}
/* Élément qui rétrécit beaucoup */
.element {
flex: 1 2 auto;
}Le shorthand flex définit dans l'ordre :
flex-growflex-shrinkflex-basisUn cas classique est une galerie d'images qui s'adapte à l'espace :
Un formulaire qui s'adapte à l'espace disponible :
flex-shrink: 0 pour les éléments fixes : Parfait pour les logos, boutons, etc.flex-shrink: 1 pour les contenus adaptables : Idéal pour les textes, images responsivesmin-width ou min-height : Pour éviter une réduction excessiveBonne nouvelle ! flex-shrink est super bien supporté :
Si tu veux devenir un expert en flexbox, je te conseille :
Tu peux aussi t'inscrire à mon cours gratuit sur Tailwind et CSS :
Récupère ton accès gratuit à 22 leçons interactives avec des exercices, des quiz et bien plus.