Comment écrire:hover condition pour un avant et un:après?

Comment écrire :hover et :visited condition a:before?

J'essaie a:before:hover mais ça ne marche pas

283
demandé sur BoltClock 2011-04-25 13:53:52

6 réponses

Cela dépend de ce que vous essayez réellement de faire.

Si vous souhaitez simplement appliquer des styles à un pseudo-élément :before lorsque l'élément a correspond à une pseudo-classe, vous devez écrire a:hover:before ou a:visited:before à la place. Notez que le pseudo-élément vient après La pseudo-classe (et en fait, à la toute fin du sélecteur entier). Notez également qu'ils sont deux choses différentes; les appeler tous les deux "pseudo-sélecteurs" va vous confondre une fois que vous rencontrez des problèmes de syntaxe tels que 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 les navigateurs hérités tels que IE8 et plus, alors vous pouvez vous en sortir avec des deux-points simples très bien.

Cet ordre spécifique de pseudo-classes et de 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 sélecteur.

Un séquence de simple sélecteurs 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 le 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 :hover1, Si vous avez besoin de cet effet pour appliquer uniquement lorsque l'utilisateur interagit avec le pseudo-élément lui-même mais pas avec l'élément a, cela n'est pas possible autrement que par une solution de contournement obscure dépendante de la mise en page. Comme le laisse entendre le texte, les pseudo-éléments CSS standard ne peuvent pas actuellement avoir de pseudo-classes. Dans ce cas, vous aurez besoin de appliquer :hover à un élément enfant réel au lieu d'un pseudo-élément.


1bien sûr, cela ne s'applique pas aux pseudo-classes de lien telles que :visited comme dans la question, puisque les pseudo-éléments ne sont pas des liens.

419
répondu BoltClock 2015-01-13 18:11:39

Écrire a:hover::before au lieu de a::before:hover: exemple.

81
répondu sandeep 2016-01-30 11:21:18

Pour modifier le texte du lien de menu sur mouseover. (Texte de langue différente sur hover) voici le

Jsfiddle exemple

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:"ಕನ್ನಡ";
}
4
répondu Rao 2013-04-24 09:17:31

Essayez d'utiliser .card-listing:hover::after hover et after utiliser ::, il travaillera

3
répondu subindas pm 2017-08-09 12:48:18

La réponse de BoltClock est correcte. La seule chose que je veux ajouter est que si vous voulez seulement sélectionner le pseudo élément, mettez un span.

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 évidence que le pseudo-élément, pas l'élément li entier

0
répondu bbrinx 2017-04-24 18:09:17

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>

Note: Le hover: avant commutateur ne fonctionne que sur la .classe test1

-2
répondu Stefan Gruenwald 2015-07-30 17:16:47