Heim >Web-Frontend >CSS-Tutorial >Warum überschreibt „.foo a:link' „a:hover' in der CSS-Spezifität?
Im Bereich CSS kann die Selektorspezifität ein wenig umwerfend sein . Lassen Sie uns in ein interessantes Rätsel eintauchen, das zeigt, wie der .foo a:link-Selektor die spezifischeren a:hover- und a:active-Selektoren überschreiben kann.
Bedenken Sie den folgenden Code:
<div class="foo"> <a href="#">Example</a> </div>
a:link, a:visited { color: blue; } a:hover, a:active { color: red; } .foo a:link, .foo a:visited { color: green; }
Die Erwartung ist, dass der Mauszeiger über den Link rot wird, stattdessen aber grün bleibt. Dieses rätselhafte Verhalten erfordert eine genauere Untersuchung der CSS-Kaskade.
Die Spezifität bestimmt die Reihenfolge, in der CSS-Regeln auf ein Element angewendet werden. Eine höhere Spezifität setzt sich gegenüber einer niedrigeren Spezifität durch. Die folgende Formel berechnet die Spezifität:
Berechnung der Spezifität unserer Selektoren:
Wie Sie sehen können, haben die Selektoren .foo a:link und .foo a:visited eine höhere Spezifität als die a:hover und a:active Selektoren (2 > 1).
Der Grund Denn das überraschende Verhalten besteht darin, dass die Selektoren .foo a:link und .foo a:visited eine höhere Spezifität aufweisen als die Selektoren a:hover und a:active. Das bedeutet, dass, obwohl a:hover und a:active in Bezug auf ihre Pseudoklassen spezifischer sind, die Klassenspezifität des .foo-Selektors siegt.
Um dieses Problem zu beheben, wird der im Problem vorgeschlagene Fix ( Das Auskommentieren der Regeln .foo a:hover und .foo a:active ist erforderlich. Durch das Hinzufügen dieser Regeln mit derselben Spezifität wie die Regeln .foo a:link und .foo a:visited haben die Stile a:hover und a:active nun Vorrang.
Das obige ist der detaillierte Inhalt vonWarum überschreibt „.foo a:link' „a:hover' in der CSS-Spezifität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!