Menu

Margin vs padding en CSS : la différence, côte à côte

Le padding est l'espace à l'intérieur de la bordure d'un élément ; la margin, l'espace à l'extérieur. Voyez les deux sur la même boîte, côte à côte et en direct, puis apprenez lequel utiliser pour les fonds, les zones cliquables, l'espace entre éléments et le centrage.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

La différence en une image

Le padding est à l'intérieur de la bordure. La margin est à l'extérieur. Les deux boîtes ci-dessous ont le même contenu et la même valeur de 24px ; seule la propriété change. Le gris est le conteneur derrière elles.

Avec le padding, les 24px sont bleus : ils font partie de la boîte, à l'intérieur de la bordure, et la boîte grandit. Avec la margin, les 24px sont gris : la boîte reste serrée autour de son texte et l'espace extérieur repousse les bords du conteneur.

Essayez les deux sur une même boîte

Déplacez les deux curseurs. Le padding agrandit la boîte bleue ; la margin éloigne la boîte des bords gris sans la modifier.

Regardez la ligne de taille : elle change quand vous déplacez le curseur du padding et reste la même quand vous déplacez celui de la margin.

Margin vs padding en un coup d'œil

PaddingMargin
EmplacementÀ l'intérieur de la bordureÀ l'extérieur de la bordure
FondAffiche le fond de l'élémentToujours transparente
Fait partie de la zone cliquableOuiNon
S'ajoute à la taille de l'élémentOui, en content-boxNon
Peut valoir autoNonOui (margin: 0 auto centre)
Peut être négatifNonOui
Les valeurs verticales fusionnentJamaisOui, les marges verticales adjacentes fusionnent
Pourcentages relatifs àLa largeur du bloc conteneurLa largeur du bloc conteneur
Usage typiqueEspace à l'intérieur des boutons, cartes, champsEspace entre éléments, centrage

Chaque propriété a sa propre page avec tous les détails : padding CSS et margin CSS.

Lequel utiliser

Posez-vous une question : l'espace appartient-il à l'élément, ou se trouve-t-il entre des éléments ?

  • L'espace autour du libellé d'un bouton, l'intérieur d'une carte, l'espace entre le texte d'un champ et sa bordure : padding. Il prend le fond et agrandit la cible.
  • L'espace entre deux paragraphes, entre des cartes, autour d'une section : margin, ou gap quand le parent est un conteneur flex ou grid.

C'est pour la zone cliquable que le choix compte le plus. Les deux liens ci-dessous occupent la même place sur la page, mais l'espace du premier est du padding et celui du second de la margin. Seul le premier est facile à atteindre :

Le contour ambre en pointillés est le bord de l'élément, c'est-à-dire la zone qui réagit aux clics et aux touchers. La margin autour du second lien est un espace vide qui ne fait rien.

L'espace entre les éléments : margin ou gap

Pour une ligne ou une grille d'éléments, gap sur le parent flex ou grid est en général plus propre que des marges sur chaque enfant : il ne se place qu'entre les éléments, jamais avant le premier ni après le dernier, il n'y a donc rien à annuler.

Ici, le conteneur gris utilise du padding (l'espace à l'intérieur, en gris), les éléments utilisent du padding (l'espace à l'intérieur de chacun, en vert), et gap gère l'espace entre eux.

Erreurs courantes

  • Utiliser la margin pour un espace qui devrait être coloré. La margin est transparente. Si l'espace doit afficher le fond, c'est du padding.
  • Utiliser la margin pour agrandir un lien. La zone cliquable s'arrête à la bordure ; utilisez le padding.
  • S'attendre à ce que deux marges verticales de 20px donnent 40px. Les marges verticales adjacentes fusionnent en 20px. Le padding ne fusionne jamais.
  • Essayer padding: auto pour centrer. Seule la margin accepte auto.
  • Oublier que le padding agrandit la boîte. Ajoutez box-sizing: border-box pour que width l'inclue.

Questions fréquentes

Quelle est la différence entre margin et padding ?

Le padding est l'espace entre le contenu d'un élément et sa bordure, à l'intérieur de l'élément. La margin est l'espace à l'extérieur de la bordure, entre l'élément et ses voisins. Le padding affiche le fond de l'élément ; la margin est toujours transparente.

Quand utiliser le padding plutôt que la margin ?

Utilisez le padding pour l'espace qui appartient à l'élément : l'espace autour du texte d'un bouton, l'intérieur d'une carte, tout ce qui doit partager le fond ou être cliquable. Utilisez la margin (ou gap en flex et grid) pour l'espace entre des éléments distincts.

Le padding ou la margin augmentent-ils la taille de l'élément ?

Le padding, oui, avec box-sizing: content-box (par défaut) : il s'ajoute à la largeur et à la hauteur. La margin ne s'ajoute jamais à la taille de l'élément ; elle ajoute de l'espace autour (un bloc en width: auto devient même plus étroit, car ses marges prennent une partie de la largeur disponible). Avec box-sizing: border-box, le padding est au contraire pris à l'intérieur de la largeur.

Le padding peut-il être négatif comme la margin ?

Non. Un padding négatif est invalide et ignoré, alors que les marges négatives sont autorisées et peuvent faire se chevaucher des éléments. Le padding ne peut pas non plus valoir auto, c'est pourquoi le centrage utilise margin: 0 auto.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER