Le box model et l'affichage
Padding, border, margin et box-sizing.
Objectifs
À la fin de cette leçon, vous saurez :
- décomposer chaque élément en contenu + padding + border + margin ;
- contrôler le flux avec display (block, inline, flex…) ;
- dimensionner proprement avec box-sizing.
Chaque élément est une boîte
┌─────────────────── margin ───────────────────┐
│ ┌──────────────── border ────────────────┐ │
│ │ ┌──────────── padding ───────────┐ │ │
│ │ │ contenu │ │ │
│ │ └────────────────────────────────┘ │ │
│ └────────────────────────────────────────┘ │
└───────────────────────────────────────────────┘
.encadre {
padding: 16px; /* espace INTÉRIEUR */
border: 1px solid #999;
margin: 24px; /* espace EXTÉRIEUR, entre boîtes */
}
Règle mnémotechnique : padding pousse le contenu depuis la bordure ; margin éloigne les boîtes entre elles.
Le piège de la largeur
Par défaut, width ne mesure que le contenu : ajouter padding et border agrandit la boîte au-delà de vos calculs. La correction universelle :
* {
box-sizing: border-box;
}
Désormais width: 300px signifie « la boîte complète fait 300px », padding et bordures incluses. Cette ligne ouvre quasiment toutes les feuilles de style modernes.
Block et inline
Deux comportements de flux fondamentaux :
| display | Occupe | Exemples natifs |
|---|---|---|
| block | toute la largeur, empile verticalement | div, p, h1, ul |
| inline | juste sa place dans le texte | a, span, strong |
a.bouton {
display: inline-block; /* reste dans le texte MAIS accepte padding/marges */
padding: 8px 16px;
}
Un lien devient cliquable confortablement grâce à inline-block : ni bloc complet, ni inline limité.
Exercice
- Sur votre CV, donnez au header un padding de 24px et une bordure ; observez la différence padding/margin.
- Activez
box-sizing: border-boxglobal puis fixez des largeurs : vérifiez que rien ne déborde. - Transformez les liens du footer en boutons via
inline-block, padding et fond coloré.
Résumé
- Boîte = contenu + padding + border + margin.
box-sizing: border-boxpartout : vos largeurs deviennent honnêtes.- block empile, inline coule ; inline-block combine.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
Point d'attention pour l'exercice 1
Si vous mettez margin sur le header et observez que l'espace semble « traverser » vers l'élément suivant, vous avez rencontré la fusion des marges verticales (margin collapsing) : deux marges adjacentes ne s'additionnent pas, la plus grande gagne. Comportement normal — retenez-le avant de croire à un bug.