Das Box-Modell

Zuletzt aktualisiert am 10. Februar 2026

Jedes HTML-Element, das der Browser rendert, ist eine rechteckige Box. Egal ob Überschrift, Absatz, Bild oder Button: Alles ist eine Box. Das Box-Modell beschreibt, wie diese Box aufgebaut ist und wie sich Größenangaben, Abstände und Rahmen zueinander verhalten. Wer das Box-Modell versteht, versteht CSS-Layouts.

Die vier Bereiche

Jede Box besteht von innen nach außen aus vier Bereichen:

Die vier Bereiche des Box-Modells
┌─────────────────────────────────┐
│           Margin                │
│  ┌───────────────────────────┐  │
│  │         Border            │  │
│  │  ┌─────────────────────┐  │  │
│  │  │      Padding        │  │  │
│  │  │  ┌───────────────┐  │  │  │
│  │  │  │    Content    │  │  │  │
│  │  │  └───────────────┘  │  │  │
│  │  └─────────────────────┘  │  │
│  └───────────────────────────┘  │
└─────────────────────────────────┘
  • Content: Der eigentliche Inhalt, also Text, Bilder, verschachtelte Elemente
  • Padding: Innenabstand zwischen Content und Border
  • Border: Der sichtbare Rahmen um das Element
  • Margin: Außenabstand zwischen dem Element und seinen Nachbarn

Content-Bereich

Der Content-Bereich wird durch width und height definiert. Ohne diese Angaben passt sich die Box an ihren Inhalt an.

width und height
.box-auto {
  background: #dbeafe;
  padding: 12px;
}

.box-fixed {
  width: 250px;
  height: 80px;
  background: #ede9fe;
  padding: 12px;
}

Block-Elemente (wie <div>) nehmen standardmäßig die volle verfügbare Breite ein. Eine feste width begrenzt das. height solltest du in den meisten Fällen weglassen und dem Inhalt überlassen, weil feste Höhen bei unterschiedlich langen Texten schnell zu Problemen führen.

Padding

Padding ist der Innenabstand zwischen dem Inhalt und dem Rahmen. Er drückt den Inhalt von den Rändern der Box weg.

Padding-Vergleich
.no-padding {
  background: #dbeafe;
  border: 2px solid #1a56db;
}

.with-padding {
  background: #dbeafe;
  border: 2px solid #1a56db;
  padding: 20px;
}

Shorthand-Notation

Du kannst Padding für jede Seite einzeln oder zusammengefasst schreiben:

Padding Shorthand
/* 1 Wert: alle Seiten gleich */
padding: 20px;

/* 2 Werte: oben/unten | links/rechts */
padding: 10px 30px;

/* 3 Werte: oben | links/rechts | unten */
padding: 10px 30px 20px;

/* 4 Werte: oben | rechts | unten | links (Uhrzeigersinn) */
padding: 5px 15px 25px 40px;

Die Reihenfolge bei vier Werten ist im Uhrzeigersinn: oben, rechts, unten, links (OBEN-Rechts-Unten-Links, merke: “TRouBLe” auf Englisch: Top, Right, Bottom, Left).

Border

Der Border ist der sichtbare Rahmen um die Box. Er liegt zwischen Padding und Margin.

Border-Varianten
.solid {
  border: 3px solid #1a56db;
}

.dashed {
  border: 2px dashed #dc2626;
}

.mixed {
  border-top: 4px solid #059669;
  border-bottom: 1px solid #d1d5db;
  border-left: none;
  border-right: none;
}

Die Border-Shorthand-Eigenschaft fasst drei Werte zusammen: border: Breite Style Farbe. Die gängigsten Border-Styles sind solid, dashed, dotted und none.

Margin

Margin ist der Außenabstand zwischen der Box und ihren Nachbarn. Im Gegensatz zu Padding ist Margin immer transparent.

Margin zwischen Elementen
.box {
  background: #dbeafe;
  border: 2px solid #1a56db;
  padding: 16px;
  margin: 20px;
}

Margin verwendet dieselbe Shorthand-Notation wie Padding (1 bis 4 Werte, im Uhrzeigersinn).

Margin Collapsing

Ein Verhalten, das Anfänger oft überrascht: Vertikale Margins von benachbarten Elementen kollabieren. Das heißt, sie werden nicht addiert, sondern der größere Wert gewinnt.

Margin Collapsing
.top {
  margin-bottom: 30px;
}

.bottom {
  margin-top: 20px;
}

/* Ergebnis: 30px Abstand (nicht 50px) */
/* Der größere Margin gewinnt */

30px margin-bottom und 20px margin-top ergeben nicht 50px Abstand, sondern 30px. Der größere Wert “schluckt” den kleineren. Dieses Verhalten gilt nur für vertikale Margins (oben/unten) und nur bei normalen Block-Elementen im Flow.

Margin Collapsing passiert nicht:

  • Bei Elementen mit display: flex oder display: grid
  • Bei Elementen mit overflow: hidden (oder anderem Overflow-Wert als visible)
  • Bei Elementen mit Border oder Padding zwischen den Margins
  • Bei horizontalen Margins (links/rechts)

Negative Margins

Im Gegensatz zu Padding erlaubt Margin negative Werte. Damit ziehst du ein Element in Richtung seiner Nachbarn.

Negative Margins
.normal {
  background: #dbeafe;
  padding: 12px;
  border: 2px solid #1a56db;
}

.negative {
  background: #fecaca;
  padding: 12px;
  border: 2px solid #dc2626;
  margin-top: -20px;
}

Negative Margins sind ein legitimes Werkzeug, aber setze sie bewusst ein. Sie können Layouts schwerer nachvollziehbar machen.

box-sizing

Jetzt kommt der Punkt, an dem viele Anfänger stolpern. Standardmäßig verwendet der Browser box-sizing: content-box. Das bedeutet: width und height beziehen sich nur auf den Content-Bereich. Padding und Border kommen obendrauf.

content-box vs. border-box
/* Standard: content-box */
.content-box {
  box-sizing: content-box;
  width: 200px;
  padding: 20px;
  border: 5px solid #dc2626;
  /* Tatsächliche Breite: 200 + 40 + 10 = 250px */
}

/* Empfohlen: border-box */
.border-box {
  box-sizing: border-box;
  width: 200px;
  padding: 20px;
  border: 5px solid #059669;
  /* Tatsächliche Breite: 200px (alles inklusive) */
}

Bei content-box sagst du “200px breit”, aber die Box wird tatsächlich 250px breit (200 + 2×20 Padding + 2×5 Border). Das ist kontraintuitiv und führt ständig zu Problemen, besonders bei prozentualen Breiten.

Bei border-box sagst du “200px breit”, und die Box ist 200px breit. Padding und Border werden nach innen gerechnet, nicht nach außen.

border-box als globaler Standard

Deshalb setzen fast alle modernen Projekte border-box als globalen Standard:

Globaler border-box Reset
*,
*::before,
*::after {
  box-sizing: border-box;
}

Diese drei Zeilen gehören an den Anfang jedes Stylesheets. Sie stellen sicher, dass width: 100% wirklich 100% bedeutet und nicht 100% plus Padding plus Border.

Häufige Fehler

  • width: 100% plus Padding ohne border-box: Die Box wird breiter als ihr Container und erzeugt einen horizontalen Scrollbalken. Lösung: box-sizing: border-box setzen.
  • Margin Collapsing nicht einkalkulieren: Wenn zwei Elemente 20px margin-bottom und 20px margin-top haben, ist der Abstand 20px, nicht 40px. Plane das in dein Layout ein.
  • height für Text-Container festlegen: Feste Höhen führen dazu, dass Text überläuft, wenn er länger wird als erwartet. Lass den Browser die Höhe berechnen.
  • Padding und Margin verwechseln: Padding ist Innenabstand (verschiebt den Inhalt weg vom Rand), Margin ist Außenabstand (verschiebt die Box weg von anderen Boxen). Die Hintergrundfarbe füllt den Padding-Bereich, aber nicht den Margin.
  • Negative Padding versuchen: Im Gegensatz zu Margin erlaubt CSS keine negativen Padding-Werte. padding: -10px ist ungültig und wird ignoriert.

Zusammenfassung

KonzeptBeschreibung
ContentDer Inhaltsbereich, definiert durch width und height
PaddingInnenabstand zwischen Content und Border
BorderSichtbarer Rahmen um die Box
MarginAußenabstand zwischen der Box und ihren Nachbarn
Margin CollapsingVertikale Margins kollabieren: der größere gewinnt
content-boxStandard: width bezieht sich nur auf den Content
border-boxEmpfohlen: width beinhaltet Content + Padding + Border
Shorthand1-4 Werte im Uhrzeigersinn: oben, rechts, unten, links
Negative MarginsErlaubt, zieht Element Richtung Nachbarn
Globaler Reset*, *::before, *::after { box-sizing: border-box; }

Du weißt jetzt, wie jede Box im Browser aufgebaut ist und wie du Abstände, Rahmen und Größen kontrollierst. Im nächsten Artikel geht es um Einheiten und Werte: Pixel, Prozent, rem, em und wann du welche Einheit verwenden solltest.

Bleib auf dem Laufenden

Erhalte neue Inhalte direkt in dein Postfach

Mit der Anmeldung akzeptierst du unsere Datenschutzerklärung. Du kannst dich jederzeit über den Link in den E-Mails wieder abmelden.

Was erwartet dich?

Neue Artikel & Videos

Wenn ich was Neues veröffentliche, erfährst du's hier zuerst.

Plattform & Kurs-Updates

Neue Kurse, Referenz-Updates und gelegentlich Sonderpreise zum Launch.

Einmal die Woche in deinem Postfach

Kurz, auf den Punkt, kein Spam.