Wie schreibe :hover
und :visited
konditioniere ich a:before
?
Ich versuche es, a:before:hover
aber es funktioniert nicht
quelle
Wie schreibe :hover
und :visited
konditioniere ich a:before
?
Ich versuche es, a:before:hover
aber es funktioniert nicht
Dies hängt davon ab, was Sie tatsächlich versuchen.
Wenn Sie einfach Stile auf ein :before
Pseudoelement anwenden möchten, wenn das a
Element mit einer Pseudoklasse übereinstimmt, müssen Sie schreiben a:hover:before
oder a:visited:before
stattdessen. Beachten Sie, dass das Pseudoelement nach der Pseudoklasse (und tatsächlich ganz am Ende des gesamten Selektors) steht. Beachten Sie auch, dass es sich um zwei verschiedene Dinge handelt. Wenn Sie beide "Pseudo-Selektoren" nennen, werden Sie verwirrt, sobald Sie auf Syntaxprobleme wie dieses stoßen.
Wenn Sie CSS3 schreiben, können Sie ein Pseudoelement mit Doppelpunkten bezeichnen, um diese Unterscheidung klarer zu machen. Daher a:hover::before
und a:visited::before
. Wenn Sie jedoch für ältere Browser wie IE8 und älter entwickeln, können Sie einzelne Doppelpunkte problemlos verwenden.
Diese spezifische Reihenfolge von Pseudoklassen und Pseudoelementen ist in der Spezifikation angegeben :
Ein Pseudoelement kann an die letzte Folge einfacher Selektoren in einem Selektor angehängt werden.
Eine Folge einfacher Selektoren ist eine Kette einfacher Selektoren, die nicht durch einen Kombinator getrennt sind. Es beginnt immer mit einem Typwähler oder einem Universalwähler. In der Sequenz ist kein anderer Typ- oder Universalwähler zulässig.
Ein einfacher Selektor ist entweder ein Typselektor, ein universeller Selektor, ein Attributselektor, ein Klassenselektor, ein ID-Selektor oder eine Pseudoklasse.
Eine Pseudoklasse ist ein einfacher Selektor. Ein Pseudoelement ist es jedoch nicht, obwohl es einem einfachen Selektor ähnelt.
Wenn Sie jedoch für Benutzeraktions-Pseudoklassen wie :hover
1 diesen Effekt nur anwenden müssen , wenn der Benutzer mit dem Pseudoelement selbst, aber nicht mit dem a
Element interagiert , ist dies nur durch eine obskure, vom Layout abhängige Problemumgehung möglich . Wie aus dem Text hervorgeht, können Standard-CSS-Pseudoelemente derzeit keine Pseudoklassen haben. In diesem Fall müssen Sie :hover
ein tatsächliches untergeordnetes Element anstelle eines Pseudoelements anwenden .
1 Dies gilt natürlich nicht für Verknüpfungspseudoklassen :visited
wie in der Frage, da Pseudoelemente keine Verknüpfungen sind.
text-decoration
.Schreiben
a:hover::before
statta::before:hover
: Beispiel .quelle
:after
vs CSS3::after
developer.mozilla.org/en-US/docs/Web/CSS/::after (Single:
hat bessere Unterstützung)So ändern Sie den Text des Menülinks beim Mouseover. (Text in anderer Sprache beim Schweben) Hier ist die
jsfiddle Beispiel
html:
CSS:
quelle
a:hover::before
mittext-decoration: underline
, wodurch die Unterstreichung die rote Farbe des Ersatztextes aufnimmt.Versuchen Sie , den Einsatz
.card-listing:hover::after
hover
undafter
Verwendung::
es wil Arbeitquelle
Die Antwort von BoltClock ist richtig. Das einzige, was ich anhängen möchte, ist, dass Sie, wenn Sie nur das Pseudoelement auswählen möchten, eine Spanne eingeben.
Zum Beispiel:
anstatt:
Auf diese Weise können Sie einfach sagen
Dadurch wird nur das Pseudoelement hervorgehoben, nicht das gesamte li-Element
quelle
Sie können Ihre Aktion auch mit der rechten spitzen Klammer (">") auf nur eine Klasse beschränken, wie ich es in diesem Code getan habe:
Hinweis: Der Schalter hover: before funktioniert nur in der Klasse .test1
quelle