Box Model

Tous les éléments HTML sont considérés comme des “boîtes” dont il est possible de définir la hauteur, la largeur, la bordure, les marges et le padding (marges à l’intérieur de la bordure).


display

Les éléments HTML ont un type par défaut: par exemple un <span> est un élément en ligne, tandis qu’un <div> est un élément en bloc. Les éléments en bloc sont affichés avec un retour à la ligne avant et après, les éléments en ligne non. Outre cette différence, certaines propriétés ne s’appliquent pas aux éléments en ligne ou que partiellement:

Article: Inline elements and padding (anglais)

La propriété display permet de modifier le mode d’affichage d’un élément.
On peut afficher un <span> en bloc et un <div> en ligne par exemple.

JSFiddle Comparaison block/inline/inline-block

Défintion:

display: none | inline | block | list-item |
         inline-list-item | inline-block | inline-table |
         table | table-cell | table-column | table-column-group |
         table-footer-group | table-header-group | table-row | table-row-group |
         flex | inline-flex | grid | inline-grid
Display Élément par défaut Version CSS
none-1
blockdiv1
inlinespan1
list-itemli1
inline-blockinput2
inline-table-2
tabletable2
table-rowtr2
table-celltd2
table-columncol2
table-captioncaption2
table-column-groupcolgroup2
table-row-grouptbody2
table-header-groupthead2
table-footer-grouptfoot2
flex-3
inline-flex-3
grid-3
inline-grid-3

Exemple:

{
  display: none;
}

visibility

Définit la visibilité de l’élément.

Définition: [CSS2]

visibility: hidden | visible | collapse

JSFiddle Comparaison display:none et visibility:hidden

Exemple:

{
  visibility: hidden;
}

opacity

Définit l’opacité d’un élément, permet de rendre un élément semi-transparent (0 = transparent, 1 = opaque)

Définition: [CSS3]

opacity: <real>

Exemple:

{
  opacity: 0.5;
}

JSFiddle opacity


border

Permet d’afficher un cadre autour d’un élément

Exemple:

{
  border-width: 10px;      /* Taille de la bordure */
  border-style: dotted;    /* La bordure est affichée en pointillés */
  border-color: red;       /* Couleur de la bordure */
}
{
  border: 10px dotted red; /* Version raccourcie */
}

Il existe aussi d’autres types de bordures (border-image, border-radius, outline, box-shadow) — qui n’influencent pas la taille de l’élément.

Des formes CSS peuvent être créer en utilisant les bordures et du contenu généré (::before, ::after). Codepen formes CSS
Pour plus de contrôle, on peut également utiliser des cercles, ellipses et polygones SVG pour créer des formes intéressantes sur tout type d’élément (images, paragraphes, etc) avec clip-path notamment.


margin

Définit les marges autour d’un élément — l’espace entre la bordure de l’élément et les éléments alentour.
Note: Chaque navigateur a des styles par défaut, ainsi ce n’est pas parce que le padding / margin n’est pas définit pour un élément qu’il vaut 0.

Définition: [CSS1]

margin: (<length> | <percentage> | auto){1,4}
margin-top: ...

La propriété auto permet de centrer l’élément à l’intérieur de son parent

Exemple:

{
  margin: 10px auto;
}

padding

Définit les marges intérieures d’un élément — l’espace entre la bordure et le texte.

Définition: [CSS1]

padding: (<length> | <percentage>){1,4}
padding-top: ...

Exemple:

{
  padding: 15px;
}

width

Exemple:

{
  width: auto;
  max-width: 100px;        /* Largeur maximum du bloc */
  min-width: 50px;         /* Largeur minimum du bloc */
}

height

Exemple:

{
  max-height: 30%;         /* Maximum 30% de son parent */
}

box-sizing

Par défaut, les valeurs de padding et border-width ne sont pas pris en compte dans le calcul des dimensions.
Si on définit width: 500px sur un bloc, la taille réelle du bloc sera de 500 + padding gauche et droite + bordure gauche et droite.
Ce comportement peut être modifié avec la propriété box-sizing, qui indique au navigateur les propriétés à prendre en compte dans le calcul des dimensions d’un élément (hauteur et largeur).

Définition: [CSS3]

box-sizing: border-box | content-box

Exemple:

{
  box-sizing: border-box   /* Prendre en compte le padding et border dans le calcul de la taille */
}

overflow

overflow permet de controler ce qu’il ce passe lorsque le contenu d’un élément est plus grand que la taille de l’élément: cacher le contenu qui dépasse ou afficher une scrollbar.

Exemple:

{
  overflow: auto;          /* Afficher une scrollbar uniquement lorsque le contenu du bloc dépasse */
}

cursor

cursor permet de changer le curseur affiché au survol d’un élément

Définition: [CSS2]

cursor: auto | cell | copy | crosshair | default | help | move |
    not-allowed | pointer | progress | text | wait | zoom-in | ...

Liste non exhaustive.
Liste complète des valeurs + demo

Exemple:

{
  cursor: pointer;
}