Heim >Web-Frontend >CSS-Tutorial >Warum überschreiben mein CSS „.foo a:link' und „.foo a:visited' „a:hover' und „a:active'?

Warum überschreiben mein CSS „.foo a:link' und „.foo a:visited' „a:hover' und „a:active'?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 14:03:12679Durchsuche

Why Does My `.foo a:link` and `.foo a:visited` CSS Override `a:hover` and `a:active`?

Warum überschreiben .foo a:link, .foo a:visited Selector a:hover, a:active Selector in CSS?

Das in der Frage beschriebene unerwartete Verhalten ergibt sich aus den Spezifitätsregeln von CSS. Die Spezifität bestimmt die Priorität von CSS-Regeln, wenn mehrere Regeln für dasselbe Element gelten.

Spezifitätstabelle:

Selector Specificity
a:link 0-0-1-1
a:visited 0-0-1-1
a:hover 0-0-1-1
a:active 0-0-1-1
.foo a:link 0-0-2-1
.foo a:visited 0-0-2-1

Wie Sie sehen können, ist .foo a:link und .foo a:visited haben aufgrund des zusätzlichen Klassenselektors eine etwas höhere Spezifität als a:hover und a:active .foo.

So funktioniert das Überschreiben der Spezifität:

Wenn mehrere Regeln mit unterschiedlichen Spezifitäten für dasselbe Element gelten, hat die Regel mit der höheren Spezifität Vorrang. In diesem Fall haben .foo a:link und .foo a:visited eine höhere Spezifität als a:hover und a:active, sodass ihre Stile die letzteren überschreiben.

Korrektur des Verhaltens:

Um zu verhindern, dass der Selektor .foo a:link und .foo a:visited überschrieben wird a:hover, a:active, Sie können die Spezifität des letzteren erhöhen. Dies kann durch Hinzufügen eines untergeordneten Selektors zu den Hover-/Aktivregeln erreicht werden:

.foo a:hover, .foo a:active {
  color: red;
}

Durch Hinzufügen der .foo-Klasse als untergeordneten Selektor erhöht sich die Spezifität der Hover-/Aktivregeln auf 0-0- 3-1, was höher ist als der von .foo a:link und .foo a:visited. Infolgedessen haben die Hover-/Aktiv-Stile Vorrang vor den Link-/Besuchten-Stilen und werden wirksam, wenn beide Pseudoklassen anwendbar sind.

Das obige ist der detaillierte Inhalt vonWarum überschreiben mein CSS „.foo a:link' und „.foo a:visited' „a:hover' und „a:active'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn