Comprends le modèle de boîte CSS — contenu, padding, bordure et marge — et apprends comment box-sizing contrôle la façon dont les dimensions des éléments sont calculées.
En CSS, chaque élément HTML est traité comme une boîte rectangulaire. Le modèle de boîte décrit l'espace qu'occupe un élément et se compose de quatre couches, de l'intérieur vers l'extérieur :
width et height.Comprendre le modèle de boîte est essentiel car il affecte directement la mise en page. L'espace total qu'occupe un élément est la somme de son contenu, padding, bordure et marge.
<style>
.box {
width: 200px;
height: 100px;
padding: 20px;
border: 3px solid darkblue;
margin: 16px;
background-color: lightyellow;
}
</style>
<div class="box">This box has padding, border, and margin.</div>
<!--
Total width = 200 + 20*2 + 3*2 + 16*2 = 278px
(content + padding + border + margin)
-->Par défaut, width et height s'appliquent uniquement à la zone de contenu. Le padding et la bordure sont ajoutés par-dessus, rendant l'élément plus grand que la largeur spécifiée. C'est ce qu'on appelle le dimensionnement content-box et cela conduit souvent à des problèmes de mise en page inattendus.
Le modèle border-box change ce comportement pour que width et height incluent le padding et la bordure. La zone de contenu rétrécit pour les accommoder :
.box {
box-sizing: border-box;
width: 200px;
padding: 20px;
border: 3px solid black;
}
/* La largeur totale est exactement 200px */
/* Zone de contenu = 200 - 40 - 6 = 154px */La plupart des CSS resets modernes appliquent border-box à tous les éléments :
*, *::before, *::after {
box-sizing: border-box;
}Cela rend le dimensionnement beaucoup plus prévisible et est considéré comme une bonne pratique.
Un élément a width: 200px, padding: 10px sur tous les côtés, et border: 5px solid. Avec le box-sizing par défaut (content-box), quelle est la largeur totale rendue ?