I have to disable the color change of an anchor tag when visited. I did this:
a:visited{ color: gray }
(The link is gray in color before visited.) But this is a way where I explicitly state the color after the link is visited, which is again a color change.
How can I disable the color change of an anchor tag when visited without doing any explicit color changes?
You can't. You can only style the visited state.
For other people who find this, make sure that you have them in the right order:
a {color:#FF0000;} /* Unvisited link */
a:visited {color:#00FF00;} /* Visited link */
a:hover {color:#FF00FF;} /* Mouse over link */
a:active {color:#0000FF;} /* Selected link */
If you just want the anchor color to stay the same as the anchor's parent element you can leverage inherit:
a, a:visited, a:hover, a:active {
color: inherit;
}
Notice there is no need to repeat the rule for each selector; just use a comma separated list of selectors (order matters for anchor pseudo elements). Also, you can apply the pseudo selectors to a class if you want to selectively disable the special anchor colors:
.special-link, .special-link:visited, .special-link:hover, .special-link:active {
color: inherit;
}
Your question only asks about the visited state, but I assumed you meant all of the states. You can remove the other selectors if you want to allow color changes on all but visited.
For :hover
to override :visited
, and to make sure :visited
is the same as the initial color, :hover
must come after :visited
.
So if you want to disable the color change, a:visited
must come before a:hover
. Like this:
a { color: gray; }
a:visited { color: orange; }
a:hover { color: red; }
To disable :visited
change you would style it with non-pseudo class:
a, a:visited { color: gray; }
a:hover { color: red; }
Either delete the selector or set it to the same color as your text appears normally.
I think if I set a color for a:visited
it is not good: you must know the default color of tag a
and every time synchronize it with a:visited
.
I don't want know about the default color (it can be set in common.css
of your application, or you can using outside styles).
I think it's nice 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;
}
You can solve this issue by calling a:link
and a:visited
selectors together. And follow it with a:hover
selector.
a:link, a:visited
{color: gray;}
a:hover
{color: skyblue;}
Use:
a:visited {
text-decoration: none;
}
But it will only affect links that haven't been clicked on yet.
来源:https://stackoverflow.com/questions/7291873/disable-color-change-of-anchor-tag-when-visited