Je dois désactiver le changement de couleur d'une balise d'ancrage lors de la visite. J'ai fait ça:
a:visited{ color: gray }
(Le lien est de couleur grise avant d'être visité.) Mais c'est une façon où j'indique explicitement la couleur après la visite du lien, ce qui est encore un changement de couleur.
Comment puis-je désactiver le changement de couleur d'une balise d'ancrage lors de la visite sans faire de changement de couleur explicite?
a
pasa:link
?a:link
et nea
sont pas les mêmes. Une ancre ne doit pas nécessairement être un lien. Il ne change normalement de couleur que lorsqu'il contient un lien.Si vous voulez simplement que la couleur d'ancrage reste la même que l'élément parent de l'ancre, vous pouvez tirer parti de l'héritage:
a, a:visited, a:hover, a:active { color: inherit; }
Notez qu'il n'est pas nécessaire de répéter la règle pour chaque sélecteur; utilisez simplement une liste de sélecteurs séparés par des virgules (l'ordre est important pour les pseudo éléments d'ancrage). En outre, vous pouvez appliquer les pseudo sélecteurs à une classe si vous souhaitez désactiver sélectivement les couleurs d'ancrage spéciales:
.special-link, .special-link:visited, .special-link:hover, .special-link:active { color: inherit; }
Votre question ne porte que sur l'état visité, mais j'ai supposé que vous parliez de tous les États. Vous pouvez supprimer les autres sélecteurs si vous souhaitez autoriser les changements de couleur sur tous sauf ceux visités.
la source
a:link
la couleur du lien par défaut (généralement bleu) et d'ena:visited
hériter, sans codage en dur "bleu" nulle part?Car
:hover
pour remplacer:visited
, et pour s'assurer:visited
que la couleur initiale est la même,:hover
doit venir après:visited
.Donc, si vous souhaitez désactiver le changement de couleur, vous
a:visited
devez venir avanta:hover
. Comme ça:a { color: gray; } a:visited { color: orange; } a:hover { color: red; }
Pour désactiver le
:visited
changement, vous le stylisez avec une classe non pseudo:a, a:visited { color: gray; } a:hover { color: red; }
la source
a:link
,a:visited
2)a:hover
3)a:active
Supprimez le sélecteur ou définissez-le sur la même couleur que votre texte apparaît normalement.
la source
Si vous utilisez un pré-processeur comme SASS, vous pouvez utiliser la
@extend
fonctionnalité:a:visited { @extend a; }
En conséquence, vous verrez un
a:visited
sélecteur ajouté automatiquement pour chaque style aveca
sélecteur, alors soyez prudent avec lui, car votre table de style peut être beaucoup plus grande.En guise de compromis, vous ne pouvez ajouter @extend que dans les blocs dont vous avez vraiment besoin.
la source
Vous pouvez résoudre ce problème en appelant
a:link
eta:visited
sélecteurs ensemble. Et suivez-le avec lea:hover
sélecteur.a:link, a:visited {color: gray;} a:hover {color: skyblue;}
la source
Je pense que si je mets une couleur pour
a:visited
ce n'est pas bon: il faut connaître la couleur par défaut du taga
et à chaque fois le synchroniser aveca:visited
.Je ne veux pas connaître la couleur par défaut (elle peut être définie dans
common.css
votre application, ou vous pouvez utiliser des styles extérieurs).Je pense que c'est une bonne solution:
HTML
:<body> <a class="absolute">Test of URL</a> <a class="unvisited absolute" target="_blank" href="google.ru">Test of URL</a> </body>
CSS
:.absolute{ position: absolute; } a.unvisited, a.unvisited:visited, a.unvisited:active{ text-decoration: none; color: transparent; }
la source
a { color: orange !important; }
!important
a pour effet que la propriété en question ne peut être remplacée que si une autre!important
est utilisée. Il est généralement considéré comme une mauvaise pratique à utiliser à!important
moins que cela ne soit absolument nécessaire; cependant, je ne peux penser à aucun autre moyen de «désactiver» en:visited
utilisant uniquement CSS.la source
Utilisation:
a:visited { text-decoration: none; }
Mais cela n'affectera que les liens sur lesquels vous n'avez pas encore cliqué.
la source