CSS wirkt am anfang oft harmlos: Ein paar Regeln, etwas Farbe, ein bisschen Abstand. Spätestens wenn Layouts unerwartet breiter sind, Styles sich gegenseitig aushebeln oder Änderungen scheinbar ignoriert werden, wird klar: hier greifen feste Mechanismen. Wenn du das Box-Modell, die Kaskade und die Spezifität verstanden hast, fällt ein grosser Teil dieses scheinbaren Chaos weg.

 

Das Box-Modell als Grundlage jedes Layouts

Jedes HTML-Element wird vom Browser als rechteckige Box behandelt. Wirklich jedes. Egal ob div, button, input oder p. Diese Box besteht aus mehreren Schichten, die klar definiert sind: content, padding, border und margin.

Der Content ist der eigentliche Inhalt, also Text oder Bilder. Padding ist der Innenabstand zwischen Content und Rahmen. Border ist der Rahmen selbst. Margin ist der Aussenabstand zu anderen Elementen. Entscheidend ist: Diese Schichten existieren immer. Auch dann, wenn du sie nicht explizit definierst.

.box {
  width: 200px;
  padding: 20px;
  border: 5px solid #000;
}

Hier entsteht ein klassischer Einsteigerfehler: Die Box ist nicht 200px breit, sondern 250px. Width gilt standardmässig nur für den Content. Padding und Border werden dazu gerechnet. Der Browser macht genau das, was die Spezifikation vorgibt.

Um dieses Verhalten zu ändern, gibt es eine zentrale Eigenschaft:

.box {
  box-sizing: border-box;
}

Mit border-box bezieht sich width auf die gesamte sichtbare Box. Padding und Border sind enthalten. Das führt zu deutlich besser kalkulierbarem Layout und ist deshalb heute de-facto-standard. Wichtig ist nicht, dass du es immer verwendest, sondern dass du verstehst, warum es einen Unterschied macht.

 

Margin, Abstände und das Kollabieren

Margin sorgt für Abstand nach aussen. Vertikale margins von Block-Elementen können jedoch zusammenfallen. Das ist kein Fehler, sondern eine bewusste Regel. Zwei aufeinanderfolgende p-Elemente mit margin-top und margin-bottom addieren sich nicht, sondern der grössere Wert gewinnt.

Das erklärt viele scheinbar verschwundene Abstände. Padding und Border sind davon nicht betroffen. Auch hier gilt: Wenn du das Verhalten kennst, kannst du bewusst damit arbeiten oder es gezielt umgehen.

 

Die Kaskade: Warum CSS so heisst

CSS bedeutet Cascading Style Sheets. Dieses Cascading beschreibt, wie der Browser entscheidet, welche Regel angewendet wird, wenn mehrere auf dasselbe Element zielen. Das ist nichts vages, sondern eine klar definierte Entscheidungskette.

Wenn zwei Regeln gleichwertig sind, gewinnt schlicht die, die später im Stylesheet steht.

p {
  color: red;
}

p {
  color: blue;
}

Der Rext ist blau. nicht weil blau wichtiger ist, sondern weil diese Regel zuletzt kommt. CSS wird strikt von oben nach unten gelesen.

Häufig wird versucht, Probleme mit immer neuen Regeln weiter unten zu überschreiben. Das funktioniert kurzfristig, führt aber zu schlecht wartbarem Code. Besser ist es, zu verstehen, warum eine Regel greift oder eben nicht.

 

Spezifitaet: Präzision schlägt Position

Neben der Reihenfolge spielt die Spezifität eine zentrale Rolle. Sie beschreibt, wie genau eine Regel ein Element adressiert. Je spezifischer ein Selektor ist, desto höher ist sein Gewicht.

p {
  color: red;
}

.content p {
  color: blue;
}

Der p-Text innerhalb von .content ist blau, selbst wenn die rote Regel weiter unten steht. Die zweite Regel ist spezifischer. Sie trifft eine kleinere, genauere Menge von Elementen.

Vereinfacht gilt: Elemente sind schwach, Klassen sind stärker, IDs sind sehr stark. Inline-Styles schlagen fast alles. !important schlägt alles andere, sollte aber die absolute Ausnahme bleiben.

#main .content p {
  color: green;
}

Solche Selektoren funktionieren, machen Code aber schnell starr. Hohe Spezifität ist kein Zeichen von Qualität. Im Gegenteil: Sie erschwert spätere Änderungen, weil du sie nur mit noch mehr Spezifität überschreiben kannst.

 

Typische Fehler und wie du sie vermeidest

Wenn ein Style nicht greift, liegt das fast immer an einem dieser Punkte: Falsche Box-Berechnung, überschrieben durch spätere Regeln oder geschlagen durch höhere Spezifität. Entwicklertools im Browser zeigen dir genau, welche Regel aktiv ist und welche deaktiviert wurde. Das ist kein optionales Hilfsmittel, sondern dein wichtigstes Werkzeug.

Versuche, Styles so einfach wie möglich zu halten. Wenige verschachtelte Selektoren, gezielter Einsatz von Klassen, konsistente Struktur. CSS lässt sich sauber lesen, wenn man es nicht gegen die Spezifikation zwingt.

 

Fazit

Das Box-Modell bestimmt, wie Elemente Grösse und Abstände berechnen. Die Kaskade entscheidet, welche Regel angewendet wird. Die Spezifität legt fest, welche Regel wichtiger ist. Diese drei Konzepte sind das Fundament von CSS.

Wenn du sie wirklich verstanden hast, fühlen sich viele Probleme nicht mehr willkürlich an, sondern logisch. Genau an diesem Punkt wird CSS vom Mysterium zu einem vernünftigen Werkzeug.