CSS-Spezifität – Cheat Sheet 🏅

Worum geht’s?

Treffen mehrere CSS-Regeln dasselbe Element und setzen dieselbe Eigenschaft (z. B. color), muss der Browser entscheiden, welche gewinnt. Er wählt die Regel mit der höchsten Spezifität.


Der Medaillenspiegel

Jeder Teil eines Selektors bringt eine Medaille:

Selektor-TypBeispielMedaillezählt als
ID#main🥇 Gold(1, 0, 0)
Klasse.card🥈 Silber(0, 1, 0)
Tag / Elementp🥉 Bronze(0, 0, 1)
Universalselektor*– keine –(0, 0, 0)
Kombinatoren > + ~– keine –(0, 0, 0)

Wie bei Olympia: Ein Land mit 1× Gold steht vor einem Land mit 50× Silber.


Die Vergleichsregel

        Selektor A   gegen   Selektor B
                    │
     Mehr Gold (IDs)?  ───── ja ────▶  gewinnt
                    │ gleich
     Mehr Silber (Klassen)? ─ ja ───▶  gewinnt
                    │ gleich
     Mehr Bronze (Tags)? ─── ja ────▶  gewinnt
                    │ gleich
     Steht später im CSS  ──────────▶  gewinnt

Es wird nie umgerechnet. 11 Klassen werden nicht zu 1 ID. Die nächste Stelle zählt nur bei Gleichstand.


Beispiele

Selektor🥇🥈🥉Kurzform
*0000.0.0
li0010.0.1
ul li0020.0.2
ul > li0020.0.2 ← > zählt nicht
h2 + p0020.0.2 ← + zählt nicht
.card0100.1.0
* .card0100.1.0 ← * zählt nicht
p.intro0110.1.1
nav .link.active0210.2.1
#main1001.0.0
#main .card p1111.1.1

Technische Brücke: Versionsnummern 💾

Spezifität funktioniert genau wie Versionsnummern bei Software-Updates:

VergleichNeuer / stärkerWarum
1.0.0 vs 0.11.01.0.0erste Stelle entscheidet
0.2.0 vs 0.1.150.2.0erste gleich → zweite entscheidet
0.10.0 vs 0.9.00.10.010 > 9 – keine Dezimalzahl!

→ Spezifität ist keine Zahl wie „100“, sondern eine Version wie 1.0.0.


Duelle

Selektor ASelektor BSiegerBegründung
div p span (0.0.3).text (0.1.0)B1 Silber schlägt 3 Bronze
.a .b .c .d .e .f .g .h .i .j .k (0.11.0)#x (1.0.0)B1 Gold schlägt 11 Silber
#nav a (1.0.1)#nav .link (1.1.0)BGold gleich → mehr Silber
ul li (0.0.2)ol > li (0.0.2)später im CSSGleichstand

Sonderwertungen (über dem Medaillenspiegel)

WasWirkungEmpfehlung
Inline-Style <p style="color:red">schlägt jeden Selektorvermeiden – schwer zu überschreiben
!importantschlägt sogar Inline-Stylesnur im Notfall

Typische Denkfehler

❌ Falsch✅ Richtig
„ID = 100, Klasse = 10, Tag = 1 → zusammenzählen“Stellen werden einzeln von links verglichen
„Je länger der Selektor, desto stärker“Nur die Medaillen zählen, nicht die Länge
„> macht den Selektor stärker“Kombinatoren und * zählen nichts
„Die untere Regel gewinnt immer“Nur bei gleicher Spezifität

Merksätze

  1. Gold vor Silber vor Bronze – ID vor Klasse vor Tag.
  2. Kein Umrechnen – wie bei Versionsnummern.
  3. Gleichstand → die spätere Regel gewinnt.