J'ai un ensemble de liens stylisés utilisant :before
pour appliquer une flèche.
Cela semble bon dans tous les navigateurs, mais lorsque j'applique le soulignement au lien, je ne veux pas avoir de soulignement sur la :before
partie (la flèche).
Voir jsfiddle par exemple: http://jsfiddle.net/r42e5/1/
Est-il possible de supprimer cela? Le style de test avec lequel je me suis assis #test p a:hover:before
est appliqué (selon Firebug), mais le soulignement est toujours là.
Un moyen d'éviter cela?
#test {
color: #B2B2B2;
}
#test p a {
color: #B2B2B2;
text-decoration: none;
}
#test p a:hover {
text-decoration: underline;
}
#test p a:before {
color: #B2B2B2;
content: "► ";
text-decoration: none;
}
#test p a:hover:before {
text-decoration: none;
}
<div id="test">
<p><a href="#">A link</a></p>
<p><a href="#">Another link</a></p>
</div>
html
css
hyperlink
pseudo-element
text-decorations
OptimusCrime
la source
la source
Réponses:
Oui, si vous modifiez le style d'affichage de l'élément en ligne de
display:inline
(valeur par défaut) àdisplay:inline-block
:C'est parce que les spécifications CSS disent :
(Soulignez le mien.)
Démo: http://jsfiddle.net/r42e5/10/
Merci à @Oriol d'avoir fourni la solution de contournement qui m'a incité à vérifier les spécifications et à voir que la solution de contournement est légale.
la source
text-decoration:underline
élément appliqué à un élément parent avecdisplay:inline-block
. Voir un exemple: jsfiddle.net/aZdhN/1 . Ensuite, le problème du demandeur peut être résolu comme ceci: stackoverflow.com/a/17347068/1529630Il y a un bogue dans IE8-11 , donc utiliser
display:inline-block;
seul ne fonctionnera pas là-bas.J'ai trouvé une solution pour ce bogue, en définissant explicitement
text-decoration:underline;
pour le: before-content, puis en écrasant à nouveau cette règle avectext-decoration:none;
Exemple de travail ici: http://jsfiddle.net/95C2M/
Mise à jour: puisque jsfiddle ne fonctionne plus avec IE8, collez simplement ce simple code de démonstration dans un fichier html local et ouvrez-le dans IE8:
la source
<img style="text-decoration:underline">
intérieur (et voici la clé)<a style="padding:0; border:none;">
Vous pouvez le faire en ajoutant ce qui suit à l'
:before
élément:Avec
display: inline-block
le soulignement disparaît. Mais alors le problème est que l'espace après l'effondrement du triangle n'est pas affiché. Pour résoudre ce problème, vous pouvez utiliserwhite-space: pre-wrap
ouwhite-space: pre
.Démo : http://jsfiddle.net/r42e5/9/
la source
pre-wrap
indice. J'utilisaiscontent:'►\a0'
(\ a0 = & nbsp;)Enveloppez vos liens dans des étendues et ajoutez la décoration de texte à l'étendue sur le a: hover comme ceci
J'ai mis à jour votre violon à ce que je pense que vous essayez de faire. http://jsfiddle.net/r42e5/4/
la source
essayez d'utiliser à la place:
cela fera-t-il?
la source
utilisez ceci
la source