Comment écrire :hover
et :visited
conditionner a:before
?
J'essaye a:before:hover
mais ça ne marche pas
Comment écrire :hover
et :visited
conditionner a:before
?
J'essaye a:before:hover
mais ça ne marche pas
Réponses:
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 de a::before:hover
: exemple .
: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
html:
<a align="center" href="#"><span>kannada</span></a>
css:
span {
font-size:12px;
}
a {
color:green;
}
a:hover span {
display:none;
}
a:hover:before {
color:red;
font-size:24px;
content:"ಕನ್ನಡ";
}
a:hover::before
avec text-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 en after
utilisant ::
ce wil travail
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:
<li><span data-icon='u'></span> List Element </li>
au lieu de:
<li> data-icon='u' List Element</li>
De cette façon, vous pouvez simplement dire
ul [data-icon]:hover::before {color: #f7f7f7;}
qui ne mettra en surbrillance que le pseudo-élément, pas tout l'élément li
Vous pouvez également limiter votre action à une seule classe en utilisant le crochet pointu droit (">"), comme je l'ai fait dans ce code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
span {
font-size:12px;
}
a {
color:green;
}
.test1>a:hover span {
display:none;
}
.test1>a:hover:before {
color:red;
content:"Apple";
}
</style>
</head>
<body>
<div class="test1">
<a href="#"><span>Google</span></a>
</div>
<div class="test2">
<a href="#"><span>Apple</span></a>
</div>
</body>
</html>
Remarque: Le survol: avant que le commutateur ne fonctionne que sur la classe .test1