Was ist CSS-Selektor-Spezifität und wie funktioniert sie?
Der Browser bestimmt, welche Stile für ein Element angezeigt werden, abhängig von der Spezifität der CSS-Regeln. Wir gehen davon aus, dass der Browser die Regeln, die auf ein bestimmtes Element zutreffen, bereits ermittelt hat. Unter den übereinstimmenden Regeln wird die Spezifität, vier durch Kommas getrennte Werte, a, b, c, d für jede Regel basierend auf Folgendem berechnet:
aist, ob Inline-Styles verwendet werden. Wenn die Eigenschaftsdeklaration ein Inline-Style für das Element ist, ista1, sonst 0.bist die Anzahl der ID-Selektoren.cist die Anzahl der Klassen-, Attribut- und Pseudoklassen-Selektoren.dist die Anzahl der Tag- und Pseudoelement-Selektoren.
Die resultierende Spezifität ist keine Punktzahl, sondern eine Matrix von Werten, die Spalte für Spalte verglichen werden können. Beim Vergleich von Selektoren, um festzustellen, welcher die höchste Spezifität hat, schauen Sie von links nach rechts und vergleichen Sie den höchsten Wert in jeder Spalte. Ein Wert in Spalte b überschreibt also Werte in den Spalten c und d, egal wie diese aussehen mögen. Daher wäre eine Spezifität von 0,1,0,0 größer als eine von 0,0,10,10.
Bei gleicher Spezifität zählt die letzte Regel. Wenn Sie dieselbe Regel zweimal in Ihrem Stylesheet (unabhängig von intern oder extern) geschrieben haben, dann ist die untere Regel in Ihrem Stylesheet näher an dem zu stylenden Element, sie wird als spezifischer angesehen und daher angewendet.
Ich würde CSS-Regeln mit geringer Spezifität schreiben, damit sie bei Bedarf leicht überschrieben werden können. Beim Schreiben von CSS-UI-Komponentenbibliotheks-Code ist es wichtig, dass sie geringe Spezifitäten haben, damit Benutzer der Bibliothek sie überschreiben können, ohne zu komplizierte CSS-Regeln nur zur Erhöhung der Spezifität oder zur Verwendung von !important verwenden zu müssen.