Modèle de boîte

Le modèle de boîte désigne la manière dont le navigateur gère l'affichage des blocs de contenu (éléments affichés en display:block). Il permet de définir:

  • les marges extérieures (utilisées pour espacer les éléments entre eux);
  • la bordure qui entour l'élément;
  • les marges intérieures (utilisées pour espacer le contenu du bord du bloc);
  • les dimensions du contenu.


important

Les propriétés margin, border et padding peuvent être définie de manière globale pour les quatre côtés de la boîte ou séparément pour chaque côté (haut, droite, bas, gauche).

Marges extérieures#

Les marges extérieures permettent d'espacer des blocs entre eux. Par défaut, certains éléments HTML comme les paragraphes ou les titres ont des marges verticales prédéfinies. Vous pouvez modifier ces valeurs en créant une règle CSS adéquate.

Attention, les marges de deux éléments consécutifs, verticalement ou horizontalement, se superposent. Dans le cas d'éléments qui ont des marges prédéfinies, assurez-vous d'avoir défini les espacements de tous les éléments.

.m-0 {
margin: 0;
}
.m-25 {
margin: 25px;
}
.mx-25 {
margin-right: 25px;
margin-left: 25px;
}
.ml-25 {
margin-left: 25px;
}

Bordures#

Le paramètre ``border``` permet de définir le style de la bordure qui entour le bloc. Il est composé de trois valeurs:

  • l'épaisseur de la bordure;
  • son style (solide, traitillé, pointillé);
  • sa couleur.
.b-red {
border: 1px solid red;
}
.b-fat-red {
border: 5px solid red;
}
.b-dot-red {
border: 1px dotted red;
}
.bb-red {
border-bottom: 1px solid red;
}

Marges intérieures#

Les marges intérieures définissent l'espacement entre la bordure et le contenu.

.b-red {
border: 1px solid red;
}
.p-25 {
margin: 25px;
}
.px-25 {
margin-right: 25px;
margin-left: 25px;
}
.pl-25 {
margin-left: 25px;
}

Dimensions#

Les dimensions du contenu du bloc peuvent être définies grâce aux attributs width et height. Par défaut, la largeur d'un bloc est toujours de 100% et sa hauteur automatiquement définie en fonction de son contenu.

important

Sauf dans le cas d'éléments dont la hauteur est précisément définie dans la maquette, on laissera généralement le paramètre height au mode automatique afin d'éviter les débordements de contenu.

.b-red {
border: 1px solid red;
}
.w-50 {
width: 50%;
}
.w-50px {
width: 50px;
}
.h-50px {
height: 50px;
}

box-sizing#

Par défaut, les paramètres de largeur et de hauteur définissent les dimensions du contenu d'un bloc et non pas de son pourtour. Les marges intérieures et les bordures vont venir s'ajouter à la valeur définie. Cela peut causer des problèmes de mise en page, par exemple dans le cas d'un élément dont la largeur est définie à 100%.

Le problème est mis en évidence dans l'exemple ci-dessous:

box-sizing: content-box (valeur par défaut)
width: 100%
padding: 0;

box-sizing: content-box (valeur par défaut)
width: 100%
padding: 25px;

box-sizing: border-box (valeur par défaut)
width: 100%
padding: 25px;

Afin de pallier à cette situation et pour simplifier la gestion de la dimension des blocs, il est recommandé de modifier le comportement par défaut de tous les blocs de votre site afin que les paramètres width et height incluent les bordures et les marges intérieures. Pour ce faire, il faut ajouter la règle suivante dans votre fichier CSS (si possible au tout début du fichier).

* {
box-sizing: border-box;
}