2011-09-03 20 views
60

Debo desactivar el cambio de color de la etiqueta de anclaje cuando se visita. Hice esto:Deshabilitar el cambio de color de la etiqueta de ancla cuando se visita

a:visited{ color: gray } 

(El enlace es de color gris antes de la visita). Pero esta es una forma en la que declaro explícitamente el color después de visitar el enlace, que de nuevo es un cambio de color.

¿Cómo puedo desactivar el cambio de color de la etiqueta de anclaje cuando se visita sin hacer ningún cambio de color explícito?

Respuesta

60

No se puede, solo se puede aplicar estilo al estado visitado.

Para otras personas encuentran esto, asegúrese de que usted los tiene en el orden correcto:

a {color:#FF0000;}  /* unvisited link */ 
a:visited {color:#00FF00;} /* visited link */ 
a:hover {color:#FF00FF;} /* mouse over link */ 
a:active {color:#0000FF;} /* selected link */ 
+4

Para ser realmente anal, ¿no debería ser 'a' be' a: link'? –

+1

Supongo que sí, aunque raramente hago eso. –

+6

No es jerga: http://en.m.wikipedia.org/wiki/Anal_retentiveness –

0

Elimine el selector o configúrelo del mismo color que su texto aparece normalmente.

10

Para :hover para anular :visited, y para asegurarse de :visited es el mismo que el color inicial, :hover debe venir después de :visited.

Si quiere deshabilitar el cambio de color, a:visited debe aparecer antes de a:hover. De esta manera:

a { color: gray; } 
a:visited { color: orange; } 
a:hover { color: red; } 

Para desactivar :visited cambio que habría diseñarlo con la clase no sea de pseudo:

a, a:visited { color: gray; } 
a:hover { color: red; } 
+2

¿Estoy viendo esto mal o estás haciendo exactamente lo contrario de lo que se dice en la cita? De acuerdo con W3Schools es 1) 'a: link',' a: visited' 2) 'a: hover' 3)' a: active' –

139

Si lo que desea el color de anclaje permanezca igual como elemento principal del ancla puede aprovechar heredar:

a, a:visited, a:hover, a:active { 
    color: inherit; 
} 

Observe que no hay necesidad de repetir la regla para cada selector; solo use una lista de selectores separados por comas (el orden importa para los pseudo elementos de anclaje). Además, se pueden aplicar los pseudo selectores a una clase si desea desactivar selectivamente los colores especiales de anclaje:

.special-link, .special-link:visited, .special-link:hover, .special-link:active { 
    color: inherit; 
} 

Su pregunta sólo se le pregunta sobre el estado visitado, pero asumido que quería decir todos los estados. Puede eliminar los otros selectores si desea permitir cambios de color en todos los visitados.

+0

Esto funcionó muy bien, ¡gracias!Como nota para los demás, es posible que tenga que agregar una etiqueta de color importante para que la tome correctamente dependiendo de qué más hay en su sitio web: color: inherit! Important; – Mmm

+1

En Chrome esto simplemente muestra el texto del enlace en negro. – RajV

+0

¿Hay alguna forma de tener 'a: link' como el color de enlace predeterminado (generalmente azul) * y * tener' a: visited' heredado de eso, sin codificación rígida "azul" en ninguna parte? – rustyx

-3
a:visited { 
    text-decoration: none; 
} 

pero solo afectará a los enlaces que aún no se hayan hecho clic.

+1

La pregunta sobre el color, no sobre la decoración de texto. –

-2

Puede resolver este problema llamando a los selectores a:link y a:visited. Y sígalo con el selector a:hover.

a:link, a:visited 
{color: gray;} 
a:hover 
{color: skyblue;} 
Cuestiones relacionadas