Tenho que desabilitar a mudança de cor de uma tag âncora quando visitada. Eu fiz isso:
a:visited{ color: gray }
(O link é cinza antes de ser visitado.) Mas esta é uma maneira em que eu declaro explicitamente a cor depois que o link é visitado, o que é novamente uma mudança de cor.
Como posso desativar a mudança de cor de uma tag âncora quando visitada sem fazer nenhuma mudança de cor explícita?
a
sera:link
?a:link
e nãoa
são iguais. Uma âncora não precisa ser necessariamente um link. Normalmente muda de cor apenas quando contém um link.Se você apenas deseja que a cor da âncora permaneça a mesma do elemento pai da âncora, você pode aproveitar a herança:
a, a:visited, a:hover, a:active { color: inherit; }
Observe que não há necessidade de repetir a regra para cada seletor; apenas use uma lista de seletores separados por vírgulas (a ordem é importante para os pseudo-elementos âncora). Além disso, você pode aplicar os pseudo seletores a uma classe se quiser desativar seletivamente as cores âncora especiais:
.special-link, .special-link:visited, .special-link:hover, .special-link:active { color: inherit; }
Sua pergunta é apenas sobre o estado visitado, mas presumi que você quisesse dizer todos os estados. Você pode remover os outros seletores se quiser permitir mudanças de cor em todos, exceto os visitados.
fonte
a:link
ser a cor do link padrão (geralmente azul) e tema:visited
herdar de que, sem qualquer hard-coding "azul"?Pois
:hover
para substituir:visited
, e ter certeza de que:visited
é igual à cor inicial,:hover
deve vir depois:visited
.Portanto, se você deseja desabilitar a mudança de cor,
a:visited
deve vir antesa:hover
. Como isso:a { color: gray; } a:visited { color: orange; } a:hover { color: red; }
Para desativar a
:visited
mudança, você deve estilizá-la com uma classe não pseudo:a, a:visited { color: gray; } a:hover { color: red; }
fonte
a:link
,a:visited
2)a:hover
3)a:active
Exclua o seletor ou defina-o com a mesma cor em que o texto aparece normalmente.
fonte
Se você usar algum pré-processador como o SASS, poderá usar o
@extend
recurso:a:visited { @extend a; }
Como resultado, você verá um
a:visited
seletor adicionado automaticamente para cada estilo coma
seletor, então seja cuidadoso com ele, porque sua tabela de estilos pode aumentar muito de tamanho.Como um meio-termo, você pode adicionar @extend apenas nos blocos de que realmente precisa.
fonte
Para aqueles que estão aplicando classes dinamicamente (ou seja, ativos): Basta adicionar uma tag "div" dentro da tag "a" com um atributo href:
<a href='your-link'> <div> <span>your link name</span> </div> </a>
fonte
Você pode resolver esse problema chamando
a:link
e osa:visited
seletores juntos. E siga com oa:hover
seletor.a:link, a:visited {color: gray;} a:hover {color: skyblue;}
fonte
Acho que se eu definir uma cor para
a:visited
ela não é bom: você deve saber a cor padrão da taga
e sempre sincronizá-la coma:visited
.Não quero saber sobre a cor padrão (pode ser definida em
common.css
seu aplicativo ou você pode usar estilos externos).Acho que é uma boa solução:
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; }
fonte
a { color: orange !important; }
!important
tem o efeito de que a propriedade em questão não pode ser substituída, a menos que outra!important
seja usada. Geralmente, é considerado uma prática!important
inadequada usar, a menos que seja absolutamente necessário; no entanto, não consigo pensar em nenhuma outra maneira de 'desabilitar':visited
usando apenas CSS.fonte
Usar:
a:visited { text-decoration: none; }
Mas isso afetará apenas os links que ainda não foram clicados.
fonte