Maîtrisez les deux axes de Flexbox pour aligner, centrer et répartir vos éléments dans les mises en page du quotidien.
Ouvrir cette leçon dans KodokonBarre de navigation, rangée de cartes, formulaire aligné : Flexbox est l'outil quotidien de la mise en page en une dimension. Tout repose sur deux axes : l'axe principal (défini par flex-direction, horizontal par défaut) et l'axe transversal, perpendiculaire au premier. justify-content répartit les éléments le long de l'axe principal ; align-items les aligne sur l'axe transversal. Retenez ce duo : il résout la majorité des cas. Prenons une barre de navigation classique.
<nav class="navbar">
<a href="/" class="logo">Kodokon</a>
<ul class="links">
<li><a href="/courses">Cours</a></li>
<li><a href="/blog">Blog</a></li>
</ul>
<button class="cta">Essayer</button>
</nav>Quelques déclarations transforment cette liste en barre professionnelle : space-between pousse le logo à gauche et le bouton à droite, align-items: center aligne verticalement des éléments de hauteurs différentes, et gap espace les liens sans marges à gérer.
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
}
.links {
display: flex;
gap: 1.5rem;
list-style: none;
}Exercice mental : si vous passez .navbar en flex-direction: column, que fait justify-content: space-between ? Il répartit désormais les éléments verticalement, car l'axe principal a pivoté. C'est le piège classique de Flexbox : justify-content et align-items ne signifient pas « horizontal » et « vertical », mais « axe principal » et « axe transversal ». Autre cas d'usage incontournable : le centrage parfait d'un contenu.
.modal-overlay {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}flex-grow distribue l'espace libre restant entre les éléments. Cas concret : une mise en page avec une barre latérale fixe et un contenu qui occupe tout le reste. flex: 0 0 240px fige la barre latérale (elle ne grandit ni ne rétrécit), tandis que flex-grow: 1 laisse le contenu absorber tout l'espace disponible.
.layout {
display: flex;
gap: 1rem;
}
.sidebar {
flex: 0 0 240px;
}
.content {
flex-grow: 1;
}flex-direction: column, que contrôle justify-content ?text-align: center et vertical-align: middlejustify-content: center et align-items: centermargin: 0 auto sur le conteneur.a a flex-grow: 2 et .b a flex-grow: 1. Que se passe-t-il ?.a est toujours exactement deux fois plus large que .b.a reçoit deux fois plus d'espace libre restant que .b.b est masqué au profit de .a