Comment écrire :hover
et :visited
conditionner a:before
?
J'essaye a:before:hover
mais ça ne marche pas
la source
Comment écrire :hover
et :visited
conditionner a:before
?
J'essaye a:before:hover
mais ça ne marche pas
Cela dépend de ce que vous essayez de faire.
Si vous souhaitez simplement appliquer des styles à un :before
pseudo-élément lorsque l' a
élément correspond à une pseudo-classe, vous devez écrire a:hover:before
ou à la a:visited:before
place. Remarquez que le pseudo-élément vient après la pseudo-classe (et en fait, à la fin du sélecteur entier). Notez également que ce sont deux choses différentes; les appeler les deux "pseudo-sélecteurs" va vous embrouiller une fois que vous rencontrez des problèmes de syntaxe comme celui-ci.
Si vous écrivez CSS3, vous pouvez désigner un pseudo-élément avec des deux-points pour rendre cette distinction plus claire. Par conséquent, a:hover::before
et a:visited::before
. Mais si vous développez pour des navigateurs hérités tels que IE8 et les versions antérieures, vous pouvez très bien utiliser des deux-points simples.
Cet ordre spécifique de pseudo-classes et pseudo-éléments est indiqué dans la spécification :
Un pseudo-élément peut être ajouté à la dernière séquence de sélecteurs simples dans un sélecteur.
Une séquence de sélecteurs simples est une chaîne de sélecteurs simples qui ne sont pas séparés par un combinateur. Il commence toujours par un sélecteur de type ou un sélecteur universel. Aucun autre sélecteur de type ou sélecteur universel n'est autorisé dans la séquence.
Un sélecteur simple est soit un sélecteur de type, un sélecteur universel, un sélecteur d'attribut, un sélecteur de classe, un sélecteur d'ID ou une pseudo-classe.
Une pseudo-classe est un simple sélecteur. Un pseudo-élément, cependant, ne l'est pas, même s'il ressemble à un simple sélecteur.
Cependant, pour les pseudo-classes d'action utilisateur telles que :hover
1 , si vous avez besoin que cet effet s'applique uniquement lorsque l'utilisateur interagit avec le pseudo-élément lui-même mais pas avec l' a
élément, cela n'est pas possible autrement que par une solution de contournement obscure dépendante de la disposition . Comme l'indique le texte, les pseudo-éléments CSS standard ne peuvent actuellement pas avoir de pseudo-classes. Dans ce cas, vous devrez appliquer :hover
à un élément enfant réel au lieu d'un pseudo-élément.
1 Bien sûr, cela ne s'applique pas aux pseudo-classes de liens :visited
comme dans la question, car les pseudo-éléments ne sont pas des liens.
text-decoration
.Écrivez
a:hover::before
au lieu dea::before:hover
: exemple .la source
:after
vs CSS3::after
developer.mozilla.org/en-US/docs/Web/CSS/::after (le single:
a un meilleur support)Pour modifier le texte du lien du menu au survol de la souris. (Texte en différentes langues en survol) voici le
exemple jsfiddle
html:
css:
la source
a:hover::before
avectext-decoration: underline
, ce qui amène le soulignement à prendre la couleur rouge du texte de remplacement.Essayez d'utiliser
.card-listing:hover::after
hover
et enafter
utilisant::
ce wil travailla source
La réponse de BoltClock est correcte. La seule chose que je veux ajouter est que si vous ne souhaitez sélectionner que le pseudo-élément, insérez une plage.
Par exemple:
au lieu de:
De cette façon, vous pouvez simplement dire
qui ne mettra en surbrillance que le pseudo-élément, pas tout l'élément li
la source
Vous pouvez également limiter votre action à une seule classe en utilisant le crochet pointu droit (">"), comme je l'ai fait dans ce code:
Remarque: Le survol: avant que le commutateur ne fonctionne que sur la classe .test1
la source