Retour • 27/01/2025
Flex-grow en CSS - Le guide complet pour maîtriser la distribution d'espace
Écris par Melvyn Malherbe le 27/01/2025
Retour • 27/01/2025
Écris par Melvyn Malherbe le 27/01/2025
Tu cherches à comprendre comment fonctionne flex-grow en CSS ? Tu veux savoir comment distribuer l'espace disponible entre tes éléments de manière précise ? Tu es au bon endroit !
Dans cet article, on va plonger en profondeur dans flex-grow, une propriété CSS puissante mais souvent mal comprise. Je vais t'expliquer son fonctionnement avec des exemples interactifs et des cas d'usage concrets.
flex-grow est une propriété CSS qui définit la capacité d'un élément à grandir par rapport aux autres éléments dans un conteneur flex. C'est comme un "coefficient de croissance" qui détermine quelle proportion d'espace disponible l'élément va prendre.
La valeur par défaut est 0, ce qui signifie que l'élément ne grandira pas automatiquement. Une valeur positive permet à l'élément de grandir pour occuper l'espace disponible.
Avant d'aller plus loin, il est crucial de comprendre ce qu'est "l'espace disponible". C'est la différence entre :
Dans cet exemple, l'espace disponible est tout ce qui reste après avoir placé la boîte bleue de 100px. La boîte rouge avec flex-grow: 1 va prendre tout cet espace disponible.
flex-grow fonctionne comme un système de proportion. Voici les règles principales :
flex-grow: 1, ils grandissent de manière égaleflex-grow: 2 et les autres flex-grow: 1, il prendra deux fois plus d'espace disponibleflex-grow: 0, il ne grandira pas du toutRegardons un exemple concret :
Dans cet exemple :
Une erreur courante est de penser que flex-grow: 2 signifie "deux fois plus grand". Ce n'est pas exactement ça ! Regardons pourquoi :
Ici, les deux boîtes ont une largeur de base de 100px. flex-grow ne distribue que l'espace disponible :
flex-growPour avoir un véritable ratio de taille, on utilise la propriété raccourcie flex :
.element {
flex: 1;
}Cette syntaxe définit :
flex-grow: 1flex-shrink: 1flex-basis: 0Le secret est dans flex-basis: 0 qui "réinitialise" la taille de base des éléments. Regardons la différence :
Maintenant, la boîte rouge est vraiment deux fois plus grande que la bleue !
Un cas d'usage classique est une barre de navigation où le menu principal doit prendre tout l'espace disponible :
Un autre cas classique est un layout avec une sidebar et un contenu principal :
flex-basis avec flex-growflex-grow selon les breakpoints pour un design responsiveflex-grow est supporté par tous les navigateurs modernes :
Si tu veux approfondir tes connaissances en CSS layout, je te recommande :
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.