La box-sizing
propriété en CSS contrôle la façon dont le modèle de boîte est géré pour l'élément auquel il s'applique.
.module ( box-sizing: border-box; )
L'une des façons les plus courantes de l'utiliser est de l'appliquer à tous les éléments de la page, pseudo éléments inclus:
*, *::before, *::after ( box-sizing: border-box; )
C'est ce qu'on appelle souvent le «dimensionnement universel des boîtes», et c'est une bonne façon de travailler! Le (littéral) que width
vous définissez est la largeur que vous obtenez, sans avoir à effectuer de calculs mentaux et à gérer la complexité qui provient des largeurs provenant de plusieurs propriétés. Nous avons même une journée de sensibilisation à la taille des boîtes ici.
Valeurs
content-box
: le défaut. Les valeurs de largeur et de hauteur s'appliquent uniquement au contenu de l'élément. Le rembourrage et la bordure sont ajoutés à l'extérieur de la boîte.padding-box
: Les valeurs de largeur et de hauteur s'appliquent au contenu de l'élément et à son remplissage. La bordure est ajoutée à l'extérieur de la boîte. Actuellement, seul Firefox prend en charge lapadding-box
valeur.border-box
: Les valeurs de largeur et de hauteur s'appliquent au contenu, au remplissage et à la bordure.inherit
: hérite de la taille de la boîte de l'élément parent.
Exemple
Cet exemple d'image compare la valeur par défaut content-box
(haut) à border-box
(bas):
![](1336966/box-sizing_css-tricks_2.png.webp)
![](1336966/box-sizing_css-tricks_2.png.webp)
La ligne rouge entre les images représente la valeur de largeur des éléments. Notez que l'élément avec la valeur par défaut box-sizing: content-box;
dépasse la largeur déclarée lorsque le remplissage et la bordure sont ajoutés à l'extérieur de la zone de contenu, tandis que l'élément avec box-sizing: border-box;
appliqué s'insère complètement dans la largeur déclarée.
Utilisation du dimensionnement de la boîte
Disons que vous définissez un élément sur width: 100px; padding: 20px; border: 5px solid black;
. Par défaut, la zone résultante mesure 150 px de large. En effet, le modèle de dimensionnement de la boîte par défaut est content-box
, qui applique la largeur déclarée d'un élément à son contenu uniquement, en plaçant le remplissage et la bordure en dehors de la boîte de l'élément. Cela augmente efficacement l'espace occupé par l'élément.
Si vous changez le box-sizing
en padding-box
, le remplissage est poussé à l'intérieur de la boîte de l'élément. Ensuite, la boîte aurait une largeur de 110px, avec 20px de rembourrage à l'intérieur et 10px de bordure à l'extérieur. Si vous souhaitez mettre le rembourrage et la bordure à l'intérieur de la boîte, vous pouvez utiliser border-box
. La boîte aurait alors 100px de large - les 10px de bordure et 20px de remplissage sont tous deux poussés à l'intérieur de la boîte de l'élément.
Démo
Voir la comparaison de Pen des valeurs de taille de boîte par CSS-Tricks (@ css-tricks) sur CodePen.
En rapport
width
height
padding
border
Prise en charge du navigateur
Chrome | Safari | Firefox | Opéra | C'EST À DIRE | Android | iOS |
---|---|---|---|---|---|---|
Tout *† | 3 * † | 1 ‡ | 7 * | 8 * | 2,1 * † | Tout * |
* padding-box
non pris en charge
† les anciennes versions nécessitent un -webkit
préfixe (Chrome 1-9, Safari 3-5, Android 2.1-3.x)
‡ -moz
Préfixe requis jusqu'à la version 28, sans préfixe à partir de 29.