Flexbox
Flexbox (Flexible Box Layout) facilite la création de mises en page flexibles, centrées, alignées et adaptatives. Il excelle pour organiser des éléments dans une dimension (ligne ou colonne).
1. Activer Flexbox
On active Flexbox sur un conteneur :
.container {
display: flex;
}
Les enfants deviennent alors des flex-items.
2. Les axes : concept fondamental
- Axe principal : direction dans laquelle les items s’alignent
- Axe secondaire : perpendiculaire à l’axe principal
Par défaut :
- Axe principal : horizontal (gauche → droite)
- Axe secondaire : vertical (haut → bas)
3. flex-direction
Définit la direction de l’axe principal :
.container {
flex-direction: row; /* par défaut */
flex-direction: row-reverse;
flex-direction: column;
flex-direction: column-reverse;
}
4. justify-content (axe principal)
Contrôle l’alignement des items sur l’axe principal :
.container {
justify-content: flex-start; /* par défaut */
justify-content: flex-end;
justify-content: center;
justify-content: space-between;
justify-content: space-around;
justify-content: space-evenly;
}
5. align-items (axe secondaire)
Contrôle l’alignement des items sur l’axe secondaire :
.container {
align-items: stretch; /* par défaut */
align-items: flex-start;
align-items: flex-end;
align-items: center;
align-items: baseline;
}
6. flex-wrap
Permet aux items de passer à la ligne :
.container {
flex-wrap: nowrap; /* par défaut */
flex-wrap: wrap;
flex-wrap: wrap-reverse;
}
7. align-content (si plusieurs lignes)
Agit comme justify-content mais pour les lignes :
.container {
align-content: flex-start;
align-content: flex-end;
align-content: center;
align-content: space-between;
align-content: space-around;
align-content: stretch; /* par défaut */
}
8. gap
Ajoute un espace entre les items :
.container {
gap: 20px;
}
9. Propriétés appliquées aux items
9.1. order
Change l’ordre visuel des items :
.item {
order: 2;
}
9.2. flex-grow
Définit la capacité d’un item à prendre l’espace disponible :
.item {
flex-grow: 1;
}
9.3. flex-shrink
Définit la capacité d’un item à rétrécir :
.item {
flex-shrink: 0;
}
9.4. flex-basis
Définit la taille de base de l’item :
.item {
flex-basis: 200px;
}
9.5. flex (raccourci)
.item {
flex: 1 0 150px; /* grow | shrink | basis */
}
9.6. align-self
Permet à un item de s’aligner différemment des autres :
.item {
align-self: center;
}
10. Exemple complet
CSS :
.container {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
gap: 20px;
}
HTML :
Bloc 1
Bloc 2
Bloc 3
11. Résumé rapide
- display: flex active Flexbox
- flex-direction définit l’axe principal
- justify-content aligne sur l’axe principal
- align-items aligne sur l’axe secondaire
- flex-wrap permet le retour à la ligne
- flex-grow / shrink / basis contrôlent la taille des items
- gap gère l’espacement