Der Browser löst das der Reihe nach auf: zuerst Origin und Wichtigkeit, dann Cascade Layers, dann Spezifität, dann Dokumentreihenfolge. Inline-Styles schlagen normale Autorenregeln, und eine important-Deklaration dreht die Origin-Reihenfolge um, sodass eine important-Regel von Nutzer oder User Agent eine important-Autorenregel schlagen kann. Innerhalb eines Layers zählt die Spezifität erst IDs, dann Klassen, Attribute und Pseudoklassen, dann Elementselektoren. Bei Gleichstand gewinnt die Regel, die zuletzt kommt.
Warum Interviewer das fragen
CSS-Bugs in großen Codebasen sind Cascade-Bugs, keine Syntax-Bugs. Der Interviewer prüft, ob du einen Spezifitätskonflikt durchdenken kannst, statt noch ein important draufzusetzen und weiterzumachen. Cascade Layers zu erwähnen zeigt, dass du mitbekommen hast, wie moderne Codebasen Third-Party-Styles und Utility-Klassen isolieren. Es öffnet außerdem die Tür zu der Frage, wie du CSS strukturieren würdest, damit diese Konflikte gar nicht erst auftauchen.
So baust du deine Antwort auf
- Zähl die Auflösungsreihenfolge auf, bevor du über Spezifitätszahlen redest.
- Erklär Spezifität als drei Kategorien, nicht als einen einzelnen Score.
- Sag, wo Cascade Layers sitzen und warum sie helfen.
- Nenn deine Regel dafür, wann important in Ordnung ist.
Beispielantwort
Ich denke daran als eine Abfolge von Tiebreakern. Zuerst schaut der Browser auf Origin und Wichtigkeit, ein Inline-Style schlägt also eine Stylesheet-Regel, und eine important-Deklaration ändert die Ordnung komplett. Dann kommen Cascade Layers, und genau das übersehen die meisten: eine Regel außerhalb jedes Layers schlägt alles in einem Layer, egal wie spezifisch die Regel im Layer ist, und spätere Layer schlagen frühere. Erst danach wird Spezifität verglichen, und das sind drei Kategorien, erst IDs, dann Klassen, Attribute und Pseudoklassen, dann Elementselektoren, von links nach rechts verglichen, eine einzelne ID schlägt also beliebig viele Klassen. Ist alles gleich, gewinnt die letzte in der Dokumentreihenfolge. In der Praxis nutze ich Layers, damit das langweilig bleibt. Ich lege Reset in einen ersten Layer, dann Third Party, dann Komponenten, dann Utilities ganz zuletzt, damit eine Utility-Klasse immer gewinnt, ohne important zu brauchen. Der einzige Ort, an dem ich important noch verwende, ist eine wirklich nicht verhandelbare Regel, meistens irgendwas in einem Print-Stylesheet.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Was macht die Pseudoklasse where mit der Spezifität, und warum ist das nützlich?
- Wie interagieren Cascade Layers mit important-Deklarationen?
- Wie würdest du eine Regel debuggen, die eigentlich greifen müsste, es aber nicht tut?
Weitere Fragen für Frontend-Entwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen