Flexbox
Flexbox aligne des éléments sur une ligne (ou une colonne) et répartit l'espace entre eux. Idéal pour les menus, les barres d'outils, les cartes…
Une seule ligne pour commencer
On met display: flex sur le parent : ses enfants directs se rangent côte à côte.
Axe principal ➡
Le sens des éléments (flex-direction). Aligné par justify-content.
Axe secondaire ⬇
L'axe perpendiculaire. Aligné par align-items.
Le terrain de jeu
Teste toutes les combinaisons. Remarque ce qui se passe quand tu passes flex-direction en column : les axes s'inversent !
En flex-direction: row, quelle propriété centre les éléments verticalement ?
justify-content: centeralign-items: centertext-align: center
En ligne, l'axe principal est horizontal (justify-content) et l'axe secondaire vertical (align-items).
Côté enfants : flex
flex: 1 dit à un enfant « prends l'espace restant ». Deux enfants en flex: 1 se partagent l'espace à égalité ; flex: 2 en prend deux fois plus.
Recettes à connaître par cœur
/* Centrer parfaitement */
.parent { display: flex; justify-content: center; align-items: center; }
/* Logo à gauche, menu à droite */
.nav { display: flex; justify-content: space-between; align-items: center; }
/* Des cartes qui passent à la ligne */
.liste { display: flex; flex-wrap: wrap; gap: 16px; }
À toi de jouer
Pile au centre
Centre la bulle horizontalement et verticalement dans la scène, avec flexbox.
Indice
C’est le parent (.scene) qui doit passer en display: flex, pas la bulle.Indice
Horizontalement :justify-content. Verticalement : align-items.Indice
Les deux valentcenter : justify-content: center; align-items: center;La barre de navigation
- Le logo à gauche, la liste de liens à droite, centrés verticalement.
- Les liens côte à côte (la
ulaussi en flex), espacés de20px.
Indice
Deux conteneurs passent en flex :nav (qui range le logo et la liste) et ul (qui range les liens).Indice
Logo à gauche et liste à droite :justify-content: space-between. Centrage vertical : align-items: center.Indice
Les deux règles :nav { display: flex; justify-content: space-between; align-items: center; }
ul { display: flex; gap: 20px; }Trois colonnes égales
Les 3 colonnes doivent avoir exactement la même largeur et remplir toute la ligne, avec 16px d'écart.
Indice
Le parent.ligne passe en display: flex, avec gap: 16px.Indice
Par défaut, chaque colonne est aussi large que son texte.flex: 1 leur fait partager l’espace à parts égales.Indice
Les deux règles :.ligne { display: flex; gap: 16px; }
.col { flex: 1; }À retenir
display: flexsur le parent.justify-content: axe principal ;align-items: axe secondaire.gappour espacer,flex-wrap: wrappour passer à la ligne.flex: 1sur un enfant : il prend l'espace disponible.