Der Unterschied in einem Bild
Padding liegt innerhalb des Rahmens. Margin liegt außerhalb. Beide Boxen unten haben denselben Inhalt und denselben Wert von 24px; nur die Eigenschaft ist anders. Das Grau ist der Container dahinter.
Mit Padding sind die 24px blau: Sie gehören zur Box, liegen innerhalb des Rahmens, und die Box wächst. Mit Margin sind die 24px grau: Die Box bleibt eng um ihren Text, und der Abstand außen drückt die Ränder des Containers weg.
Probier beides an einer Box aus
Bewege die beiden Schieberegler. Padding lässt die blaue Box wachsen; Margin rückt die Box von den grauen Rändern weg, ohne sie zu verändern.
Achte auf die Zeile mit der Größe: Sie ändert sich, wenn du den Padding-Regler bewegst, und bleibt gleich, wenn du den Margin-Regler bewegst.
Margin vs Padding im Überblick
| Padding | Margin | |
|---|---|---|
| Wo | Innerhalb des Rahmens | Außerhalb des Rahmens |
| Hintergrund | Zeigt den Hintergrund des Elements | Immer transparent |
| Teil der Klickfläche | Ja | Nein |
| Vergrößert das Element | Ja, unter content-box | Nein |
Kann auto sein | Nein | Ja (margin: 0 auto zentriert) |
| Kann negativ sein | Nein | Ja |
| Vertikale Werte fallen zusammen | Nie | Ja, benachbarte vertikale Margins fallen zusammen |
| Prozent bezogen auf | Breite des umgebenden Blocks | Breite des umgebenden Blocks |
| Typischer Einsatz | Abstand in Buttons, Karten, Eingabefeldern | Abstand zwischen Elementen, Zentrieren |
Jede Eigenschaft hat eine eigene Seite mit allen Details: CSS Padding und CSS Margin.
Welche du nimmst
Stell dir eine Frage: Gehört der Abstand zum Element, oder liegt er zwischen Elementen?
- Luft um die Beschriftung eines Buttons, das Innere einer Karte, Abstand zwischen dem Text eines Eingabefelds und seinem Rahmen: Padding. Es übernimmt den Hintergrund und vergrößert die Zielfläche.
- Abstand zwischen zwei Absätzen, zwischen Karten, um einen Abschnitt: Margin, oder
gap, wenn das Elternelement ein Flex- oder Grid-Container ist.
Am wichtigsten ist die Wahl bei der Klickfläche. Die beiden Links unten nehmen auf der Seite gleich viel Platz ein, aber beim ersten ist der Abstand Padding und beim zweiten Margin. Nur der erste ist leicht zu treffen:
Die gestrichelte bernsteinfarbene Umrandung ist der Rand des Elements, also die Fläche, die auf Klicks und Tippen reagiert. Das Margin um den zweiten Link ist leerer Raum, der nichts tut.
Abstand zwischen Items: Margin oder gap
Für eine Reihe oder ein Raster von Items ist gap am Flex- oder Grid-Elternelement meist sauberer als Margins an jedem Kind: Es wirkt nur zwischen den Items, nie vor dem ersten oder nach dem letzten, also gibt es nichts rückgängig zu machen.
Hier nutzt der graue Container Padding (Abstand in ihm, grau), die Items nutzen Padding (Abstand in jedem, grün), und gap kümmert sich um den Abstand dazwischen.
Häufige Fehler
- Margin für Abstand nutzen, der farbig sein soll. Margin ist transparent. Soll der Abstand den Hintergrund zeigen, ist es Padding.
- Margin nutzen, um einen Link größer zu machen. Die Klickfläche endet am Rahmen; nimm Padding.
- Erwarten, dass zwei vertikale Margins von 20px zusammen 40px ergeben. Benachbarte vertikale Margins fallen auf 20px zusammen. Padding fällt nie zusammen.
padding: autozum Zentrieren versuchen. Nur Margin akzeptiertauto.- Vergessen, dass Padding die Box vergrößert. Füge
box-sizing: border-boxhinzu, damitwidthes einschließt.
Häufig gestellte Fragen
Was ist der Unterschied zwischen Margin und Padding?
Padding ist der Abstand zwischen dem Inhalt eines Elements und seinem Rahmen, also innerhalb des Elements. Margin ist der Abstand außerhalb des Rahmens, zwischen dem Element und seinen Nachbarn. Padding zeigt den Hintergrund des Elements; Margin ist immer transparent.
Wann nehme ich Padding statt Margin?
Nimm Padding für Abstand, der zum Element gehört: Luft um den Text eines Buttons, das Innere einer Karte, alles, was den Hintergrund teilen oder klickbar sein soll. Nimm Margin (oder gap in Flex und Grid) für Abstand zwischen getrennten Elementen.
Machen Padding oder Margin das Element größer?
Padding schon, unter dem Standard box-sizing: content-box: Es wird zu Breite und Höhe addiert. Margin wird nie zur Größe des Elements addiert, sondern fügt Abstand drumherum hinzu (ein Block mit width: auto wird sogar schmaler, weil seine Margins einen Teil der verfügbaren Breite belegen). Mit box-sizing: border-box wird Padding stattdessen von der Breite abgezogen.
Kann Padding negativ sein wie Margin?
Nein. Negatives Padding ist ungültig und wird ignoriert, negative Margins sind dagegen erlaubt und können Elemente überlappen lassen. Padding kann auch nicht auto sein, deshalb zentriert man mit margin: 0 auto.