CSS-Grundlagen · 5 von 11
Kaskade & Spezifität
Du hast bereits viele Selektoren kennengelernt. In echten Projekten treffen oft mehrere CSS-Regeln auf dasselbe Element, und diese Regeln können sich widersprechen. Welche Farbe gewinnt, wenn ein Absatz gleichzeitig von einem Element-Selektor, einer Klasse und einer ID gestylt wird? Die Antwort liefert die Kaskade: Ein festes Regelwerk, das der Browser bei jedem einzelnen Element durchgeht.
- Reihe
- CSS-Grundlagen
- Teil
- 5 von 11
- Kapitel
- 8
- Vorschauen
- 5
- Lesezeit
- 6 Min
- Stand
- 03.07.2026
Die Kaskade
01 / 08Das “C” in CSS steht für “Cascading”. Die Kaskade ist der Algorithmus, mit dem der Browser entscheidet, welche CSS-Deklaration gewinnt. Drei Faktoren spielen dabei eine Rolle, und der Browser prüft sie in dieser Reihenfolge:
- Herkunft und Wichtigkeit: Woher kommt die Regel? (Browser-Defaults, dein Stylesheet,
!important) - Spezifität: Wie genau ist der Selektor?
- Reihenfolge im Code: Bei gleicher Spezifität gewinnt die letzte Regel.
Reihenfolge im Code
Der einfachste Fall: Zwei Regeln mit der gleichen Spezifität, die auf dasselbe Element zielen. Die letzte Regel gewinnt.
p {
color: #1a56db;
}
p {
color: #dc2626;
}<p>Welche Farbe hat dieser Text?</p> Der Text ist rot, weil die zweite Regel weiter unten im Code steht. Bei identischen Selektoren entscheidet die Reihenfolge. Das gilt auch, wenn die Regeln in verschiedenen Stylesheets stehen: Das zuletzt eingebundene Stylesheet gewinnt.
Spezifität berechnen
02 / 08Wenn zwei Regeln unterschiedliche Selektoren verwenden, entscheidet die Spezifität. Je spezifischer ein Selektor, desto höher seine Priorität. Die Spezifität lässt sich als Punktesystem verstehen.
Das Punkte-System
Jeder Selektor bekommt einen Wert in drei Kategorien. Denk an drei Spalten:
Der Universal-Selektor (*), Kombinatoren (>, +, ~) und die Negation (:not()) zählen nicht zur Spezifität. Bei :not() zählt allerdings der Selektor innerhalb der Klammern.
Beispiel-Berechnungen
Wichtig: Die Spalten werden nicht addiert, sondern von links nach rechts verglichen. Ein einziger ID-Selektor (1-0-0) schlägt hundert Klassen-Selektoren (0-100-0). Die Kategorien “überlaufen” nicht.
Spezifität in Aktion
p {
color: #1a56db; /* Spezifität: 0-0-1 */
}
.highlight {
color: #dc2626; /* Spezifität: 0-1-0 */
}
#special {
color: #059669; /* Spezifität: 1-0-0 */
}<p id="special" class="highlight">Welche Farbe gewinnt?</p> Der Text ist grün. Obwohl p und .highlight ebenfalls eine Farbe definieren, gewinnt #special, weil die ID-Spezifität (1-0-0) höher ist als Klasse (0-1-0) und Element (0-0-1). Die Reihenfolge im Code spielt hier keine Rolle.
Vererbung
03 / 08Manche CSS-Eigenschaften werden automatisch von Eltern-Elementen an ihre Kinder weitergegeben. Das nennt man Vererbung.
div {
color: #7c3aed;
font-size: 18px;
border: 2px solid #7c3aed;
padding: 16px;
}<div>
<p>Dieser Absatz erbt Farbe und Schriftgröße.</p>
<p>Aber nicht den Border und nicht das Padding.</p>
</div> Die <p>-Elemente bekommen color und font-size automatisch vom <div>, obwohl für p keine Regel definiert wurde. Aber border und padding werden nicht vererbt, weil das in den meisten Fällen nicht sinnvoll wäre.
Werden vererbt (Auswahl): color, font-family, font-size, font-weight, line-height, text-align, visibility, cursor, list-style
Werden nicht vererbt (Auswahl): margin, padding, border, background, width, height, display, position
Faustregel: Text-bezogene Eigenschaften werden vererbt. Box-bezogene Eigenschaften (Abstände, Rahmen, Größen) nicht.
Vererbung steuern
Mit drei Schlüsselwörtern kannst du die Vererbung manuell kontrollieren:
.parent {
color: #dc2626;
border: 2px solid #dc2626;
padding: 12px;
}
.child-inherit {
border: inherit;
padding: 8px;
}
.child-initial {
color: initial;
}<div class="parent">
<p>Normales Kind: Erbt die rote Farbe.</p>
<p class="child-inherit">inherit: Erbt auch den Border.</p>
<p class="child-initial">initial: Setzt Farbe auf den Anfangswert zurück.</p>
</div> inherit: Erzwingt Vererbung, auch bei Eigenschaften, die normalerweise nicht vererbt werdeninitial: Setzt die Eigenschaft auf den CSS-Standardwert zurück (nicht den Browser-Default, sondern den Wert aus der CSS-Spezifikation)unset: Kombiniert beides. Bei Eigenschaften, die normalerweise vererbt werden, wirkt es wieinherit. Bei allen anderen wieinitial.
!important
04 / 08 Mit !important hinter einem Wert überschreibst du alle normalen Spezifitäts-Regeln:
#title {
color: #1a56db; /* Spezifität: 1-0-0 */
}
.warning {
color: #dc2626 !important; /* Gewinnt trotz niedrigerer Spezifität */
}<h2 id="title" class="warning">Welche Farbe gewinnt?</h2>