C'est quoi Flexbox ?
Flexbox (Flexible Box Layout) est un système de mise en page CSS conçu pour aligner et distribuer des éléments dans un conteneur. Avant Flexbox, centrer un élément verticalement était un cauchemar. Maintenant, c'est une ligne.
Le principe : on déclare display: flex sur le conteneur, et ses enfants directs deviennent des flex items qui se positionnent automatiquement.
Direction et alignement
flex-direction: row: en ligne (par défaut, de gauche à droite)flex-direction: column: en colonne (de haut en bas)
L'axe principal (flex-direction) définit deux propriétés d'alignement :
justify-content: alignement sur l'axe principal (horizontal en row)align-items: alignement sur l'axe transversal (vertical en row)
Valeurs de justify-content : flex-start, center, flex-end, space-between, space-around, space-evenly.
Valeurs de align-items : stretch (par défaut), center, flex-start, flex-end.
Gap, flex-wrap et flex
gap: 16px: espace entre les flex items (remplace les margin)flex-wrap: wrap: les items passent à la ligne si pas assez de placeflex: 1: raccourci pourflex-grow: 1; flex-shrink: 1; flex-basis: 0(l'item prend l'espace disponible)
Astuce : display: flex; justify-content: center; align-items: center; : ces 3 lignes centrent parfaitement n'importe quel contenu, horizontalement et verticalement. C'est la technique de centrage la plus utilisée.
What is Flexbox?
Flexbox (Flexible Box Layout) is a CSS layout system designed to align and distribute elements in a container. Before Flexbox, vertically centering an element was a nightmare. Now it's one line.
The principle: you declare display: flex on the container, and its direct children become flex items that position themselves automatically.
Direction and alignment
flex-direction: row— in a row (default, left to right)flex-direction: column— in a column (top to bottom)
The main axis (flex-direction) defines two alignment properties:
justify-content— alignment on the main axis (horizontal in row)align-items— alignment on the cross axis (vertical in row)
justify-content values: flex-start, center, flex-end, space-between, space-around, space-evenly.
align-items values: stretch (default), center, flex-start, flex-end.
Gap, flex-wrap and flex
gap: 16px— space between flex items (replaces margins)flex-wrap: wrap— items wrap to the next line if there's not enough roomflex: 1— shorthand forflex-grow: 1; flex-shrink: 1; flex-basis: 0(item takes available space)
Tip: display: flex; justify-content: center; align-items: center; — these 3 lines perfectly center any content, horizontally and vertically. It's the most used centering technique.
Pour pratiquer Flexbox de manière ludique, essayez :
Flexbox Froggy : https://flexboxfroggy.com/ : Un jeu gratuit pour apprendre Flexbox en guidant des grenouilles vers leurs nénuphars.
Avec tes mots : quelle est la différence entre l'axe principal et l'axe transversal, et que se passe-t-il pour justify-content et align-items quand on passe de flex-direction: row à column ?
flex-direction, l'axe transversal lui est perpendiculaire. justify-content aligne toujours sur l'axe principal, align-items sur l'axe transversal. Donc en row : justify-content = horizontal, align-items = vertical. En column les deux s'inversent : justify-content devient vertical et align-items horizontal. Les propriétés ne changent pas, c'est l'axe qui pivote.L'IA devait centrer le contenu de la boîte, mais elle a utilisé justify-content: flex-start au lieu de center. Le texte est collé à gauche au lieu d'être centré. Corrigez !
Tu demandes à l'IA de centrer verticalement le titre dans une barre display: flex (en row). Elle propose ce code. L'accepter tel quel ou le rejeter, et dire pourquoi.
.barre {
display: flex;
justify-content: center;
}
flex-direction: row (par défaut) c'est align-items: center qui agit sur l'axe vertical. justify-content: center centre sur l'axe principal, donc horizontalement : ça ne répond pas à la demande. C'est l'erreur d'axe la plus courante. La correction : ajouter align-items: center (et retirer le justify-content s'il n'était pas voulu).Sans remonter dans la leçon : quelle propriété active Flexbox sur un conteneur, et quelles 3 déclarations centrent un contenu horizontalement et verticalement ?
display: flex active Flexbox sur le conteneur (ses enfants directs deviennent des flex items). Pour centrer dans les deux dimensions : display: flex; justify-content: center; align-items: center; : justify-content centre sur l'axe principal et align-items sur l'axe transversal.flex-wrap: wrap ?Flexbox rules over one dimension, a row or a column. But to build a real two dimensional layout, rows AND columns at once, you need a more powerful tool. In the next lesson we take on CSS Grid and its full grids.
Lesson 6: CSS Grid →