Flexbox est un système de mise en page moderne qui rend très simple : centrer, aligner, espacer des éléments dans un container.
Pour utiliser Flexbox, il suffit d’ajouter
display: flex; sur un élément parent.
Tous ses enfants deviennent des “flex items”.
.conteneur {
display: flex;
}
<div class="conteneur">
<div>Bloc 1</div>
<div>Bloc 2</div>
<div>Bloc 3</div>
</div>
.conteneur {
display: flex;
gap: 10px;
}
gap ajoute un espacement entre les items.
Quelle propriété doit-on mettre sur le parent pour activer Flexbox ?
La propriété flex-direction choisit le sens principal :
row (par défaut) → de gauche à droitecolumn → de haut en bas.conteneur {
display: flex;
flex-direction: row; /* ou column */
}
Quel valeur de flex-direction affiche les éléments en colonne ?
Aligne les items sur l’axe principal (horizontal si row, vertical si column).
flex-start : au débutcenter : au centreflex-end : à la finspace-between : espace entre les itemsspace-around, space-evenlyAligne les items sur l’axe secondaire.
stretch (par défaut)flex-startcenterflex-end.conteneur {
display: flex;
justify-content: center;
align-items: center;
}
Pour centrer des items au milieu d’un conteneur (horizontalement et verticalement), on utilise souvent :
Teste différents réglages pour comprendre comment les éléments bougent.
flex-direction: row;,
justify-content: space-between;,
align-items: center;
→ configuration classique pour une barre de navigation.
Sur les éléments eux-mêmes, la propriété flex permet de contrôler leur largeur.
.item {
flex: 1; /* équivalent à flex: 1 1 0 */
}
flex-grow : capacité à prendre plus de placeflex-shrink : capacité à rétrécirflex-basis : taille de base.item-large {
flex: 2; /* prendra environ 2x plus de place que un item avec flex:1 */
}
Si trois éléments ont respectivement flex: 1, flex: 1, flex: 2, lequel sera le plus large ?
Crée une page flex-layout.html + un fichier
flex-layout.css avec :
display: flex; sur le conteneur,gap pour l’espace,flex-wrap: wrap; pour permettre le retour à la ligne..nav {
display: flex;
justify-content: space-between;
align-items: center;
}
.cartes {
display: flex;
gap: 16px;
flex-wrap: wrap;
}
.carte {
flex: 1 1 250px;
}