ComparaisonComparaisons

margin vs padding

margin est un espace transparent à l’extérieur de l’élément. padding est l’espace à l’intérieur de la bordure, entre le contenu et le bord, et prend le fond de l’élément.

Sur cette page

Comparaison point par point

#
  • Position par rapport à la bordure

    margin
    À l’extérieur
    padding
    À l’intérieur, autour du contenu
  • Affiche le fond de l’élément

    margin
    Non, toujours transparent
    padding
    Oui, il reprend le fond et la couleur de l’élément
  • Valeurs négatives

    margin
    Autorisées, elles rapprochent ou superposent les éléments
    padding
    Non autorisées
  • Fusion avec le voisin (collapsing)

    margin
    Les marges verticales de blocs voisins fusionnent parfois
    padding
    Ne fusionne jamais
  • Centrage d’un bloc

    margin
    margin: 0 auto centre un bloc de largeur connue
    padding
    Ne sert pas à centrer
  • Utilisation typique

    margin
    Espace entre les cartes, les paragraphes, les éléments de liste
    padding
    Espace à l’intérieur des boutons, des champs, des cartes

Exemple

#
CSS
.card {
  margin-bottom: 16px;
  padding: 16px;
  border: 1px solid #3f3f46;
  border-radius: 10px;
}
Aperçu

Définition et utilisation

#

Ces deux propriétés ajoutent de l’espace libre, mais à un endroit différent du modèle de boîte. margin se situe en dehors de la bordure de l’élément et le sépare de ses voisins, c’est pourquoi il est toujours transparent : on voit au travers ce qu’il y a en dessous. padding se situe à l’intérieur de la bordure, entre le contenu et le bord, donc il hérite du fond et de la couleur de l’élément : un bouton avec du padding "respire", car le fond s’étend avec lui.

La différence se voit aussi dans le comportement. margin peut être négatif, ce qui rapproche ou superpose les éléments, et les marges verticales de deux blocs voisins fusionnent parfois en un seul espace plus grand (collapsing). padding n’est jamais négatif et ne fusionne jamais avec rien.

En pratique, le choix est simple : l’espace entre des cartes, des paragraphes ou des éléments de liste, c’est margin, ou encore mieux dans les conteneurs flex et grid, la propriété gap. L’espace entre le contenu d’un bouton, d’un champ ou d’une carte et son bord, c’est padding.

Syntaxe

#
Syntaxe
margin: <haut> <droite>? <bas>? <gauche>?;
padding: <haut> <droite>? <bas>? <gauche>?;

Plus d’exemples

#
Un margin négatif superpose les éléments
CSS
.avatar {
  margin-left: -12px;
  border: 2px solid #0c0c10;
}

.avatar:first-child {
  margin-left: 0;
}
Aperçu

Une marge négative superpose les avatars, comme dans le motif populaire "qui est en ligne".

Un padding trop petit complique le clic
CSS
.button-tight {
  padding: 2px 4px;
}

.button-comfy {
  padding: 10px 18px;
}
Aperçu

Sur un téléphone, la zone cliquable devrait mesurer au moins environ 44px, et c’est justement le padding qui la détermine.

Bonnes pratiques

#
  • Réglez les espaces entre les éléments d’une liste, des cartes ou des champs de formulaire avec le gap du conteneur, plutôt qu’avec des marges sur chaque élément.
  • Si un élément "disparaît" sous son voisin ou devient trop grand, vérifiez d’abord le padding : avec box-sizing: content-box, il agrandit l’élément au-delà de width.
  • La marge entre des sections peut être imprévisible à cause du collapsing. En cas de doute, vérifiez le résultat dans les outils de développement.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.