Front-end · 6 mondes · 18 étapes
HTML & CSS
Structurer et styliser une page web, directement dans le navigateur.
Progression
0 %
0/18 étapes terminées
Intermédiaire · 11 min de lecture
Flexbox et Grid
Un axe ou deux dimensions
1Définition
Flexbox distribue des éléments sur un axe : une rangée ou une colonne. Grid dispose des éléments sur une trame à deux dimensions, déclarée d'avance. Les deux se pilotent depuis le conteneur parent, et coexistent dans tous les projets.
2Principes fondamentaux
01
Le parent commande
display: flex ou display: grid se posent sur le conteneur ; les enfants directs obéissent.
02
Deux axes en Flexbox
justify-content sur l'axe principal, align-items sur l'axe secondaire. Changer flex-direction échange les deux.
03
fr en Grid
1fr est une part de l'espace restant : repeat(3, 1fr) fait trois colonnes égales sans calcul.
04
Le responsive sans media query
repeat(auto-fit, minmax(200px, 1fr)) et flex: 1 1 200px adaptent le nombre de colonnes à la place disponible.
3Exemples pratiques
La barre de navigation
1.entete {2 display: flex;3 justify-content: space-between;4 align-items: center;5 gap: 16px;6 flex-wrap: wrap;7}Logo à gauche, liens à droite, centrés en hauteur, et passage à la ligne s'il le faut : la recette de presque tous les en-têtes du web.
La galerie qui s'adapte seule
1.galerie {2 display: grid;3 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));4 gap: 16px;5}Une colonne sur téléphone, quatre sur grand écran, et tout ce qu'il y a entre les deux — sans une seule media query.
4Erreurs courantes
display: flex sur les enfants
À éviter
.carte { display: flex; } /* pour les aligner entre elles */À faire
.grille { display: flex; }Pourquoi : Flexbox organise les enfants du conteneur. Posé sur les cartes, il réorganise l'intérieur de chaque carte.
Confondre les axes
À éviter
justify-content: center; /* pour centrer verticalement en row */À faire
align-items: center;Pourquoi : En row, l'axe vertical est l'axe secondaire : c'est align-items qui le gouverne.
Des marges entre éléments
À éviter
.carte { margin-right: 16px; }À faire
.grille { gap: 16px; }Pourquoi : La marge du dernier élément déborde et doit être annulée ; gap ne s'applique qu'entre les éléments.
5Subtilités à connaître
- ◆
flex: 1est un raccourci pourflex: 1 1 0%: grandir, rétrécir, en partant d'une base nulle — d'où des parts parfaitement égales. - ◆
place-items: centersur un conteneur grid centre dans les deux dimensions en une ligne. - ◆
auto-fitécrase les colonnes vides,auto-fillles conserve : la différence n'apparaît que lorsqu'il y a peu d'éléments.
6Vérifie ta compréhension
Question 1/3
Score 0
Où écrit-on display: flex ?
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.