Propriété CSS box-sizing

La propriété box-sizing définit la calculation de la width (largeur) et height (hauteur) d'un élément, si elles comprennent padding (remplissage) et border (bordure).

Les propriétés width et height d'un élément sont par défaut calculées comme cela:

  • width+ padding + border= largeur actuelle d'un élément
  • height+ padding + border= hauteur actuelle d'un élément

Donc, quand la largeur et la hauteur de l'élément sont définies, l'élément apparaît plus gros qu'il était défini (car la border et le padding de l'élément ont ajoutées la largeur et la hauteur).

Valeur initiale content-box
Appliquée à Tous les éléments, à l'éxception de largeur et hauteur.
Héritée Non.
Animable Non.
Version CSS3
Syntaxe DOM object.style.boxSizing = "border-box";

Syntaxe

box-sizing: content-box | border-box | initial | inherit;

Dans cet exemple il y a deux éléments <div> avec la même width et height: spécifiées.

Exemple

<!DOCTYPE html>
<html>
  <head>
    <style> 
      .div1 {
      box-sizing: content-box;
      width: 400px;
      height: 50px;
      padding: 50px;
      border: 5px double #1c87c9;
      }
      .div2 {
      box-sizing: border-box;
      width: 400px;
      height: 50px;  
      padding: 50px;
      border: 5px dashed #8ebf42;
      }
    </style>
  </head>
  <body>
    <h2>Exemple de box-sizing</h2><hr />
    <h3>box-sizing: content-box (default):</h3>
    <div class="div1">La largeur de ce div est définie 400px. Donc, la largeur complète est 400px + 10px (bordures droite et gauche) + 100px (padding droit et gauche) = 510px.</div>
    <br>
    <h3>box-sizing: border-box:</h3>
    <div class="div2">La largeur et la hauteur s'appliquent à toutes les parties de l'élément div: La largeur complète est 400px.</div>
  </body>
</html>

Si la propriété box-sizing est définie comme content-box, la largeur complète sera plus que la largeur définie pour div. Et si la box-sizing: border-box est définie, padding et border seront compris dans width et height.

Voyons un autre exemple avec deux boîtes bordurées définies côte à côte.

Exemple

<!DOCTYPE html>
<html>
  <head>
    <style> 
      div.container {
      width: 100%;
      border: 2px double #1c87c9;
      }
      div.box {
      box-sizing: border-box;
      width: 50%;
      border: 3px solid #ccc;
      float: left;
      padding: 3px;
      }
    </style>
  </head>
  <body>
    <h2>Exemple de box-sizing</h2>
    <p>Voici deux boîtes bordurés définis côte à côte.</p>
    <div class="container">
      <div class="box">Left part</div>
      <div class="box">Right part</div>
      <div style="clear:both;"></div>
    </div>
  </body>
</html>

Valeurs

Valeur Description
content-box Les propriétés width et height inclurent le contenu, mais les propriétés padding, border, ou margin ne sont pas inclus. C'est la valeur initiale.
border-box Les propriétés width et height inclurent le contenu, padding et border, mais n'inclure pas margin.
initial Définit la valeur initiale.
inherit Hérite la propriété de l'élément parent.

Support de Navigateurs

chrome edge firefox safari opera
10.0+
4.0-9.0 -wbkit-
12.0+ 29.0+
2.0-28.0 -moz-
5.1+
3.1-5.0 -webkit-
10.0+

Pratiquez vos connaissances

Quels sont les deux types de valeurs pour la propriété 'box-sizing' en CSS selon l'article sur w3docs.com?
Trouvez-vous cela utile?