Tengo que deshabilitar el cambio de color de una etiqueta de anclaje cuando la visito. Hice esto:
a:visited{ color: gray }
(El enlace es de color gris antes de visitarlo). Pero esta es una forma en la que establezco explícitamente el color después de visitar el enlace, que nuevamente es un cambio de color.
¿Cómo puedo desactivar el cambio de color de una etiqueta de anclaje cuando la visito sin hacer ningún cambio de color explícito?
a
serloa:link
?a:link
y noa
son lo mismo. Un ancla no tiene por qué ser necesariamente un enlace. Normalmente cambia de color solo cuando contiene un enlace.Si solo desea que el color del ancla permanezca igual que el elemento principal del ancla, puede aprovechar la herencia:
a, a:visited, a:hover, a:active { color: inherit; }
Observe que no es necesario repetir la regla para cada selector; simplemente use una lista de selectores separados por comas (el orden es importante para los pseudo elementos de anclaje). Además, puede aplicar los pseudo selectores a una clase si desea deshabilitar selectivamente los colores de ancla especiales:
.special-link, .special-link:visited, .special-link:hover, .special-link:active { color: inherit; }
Su pregunta solo se refiere al estado visitado, pero asumí que se refería a todos los estados. Puede eliminar los otros selectores si desea permitir cambios de color en todos menos los visitados.
fuente
a:link
el color de los enlaces por defecto (normalmente azul) y tienena:visited
Heredar de que, sin la codificación dura "azul" en cualquier lugar?Para
:hover
anular:visited
y asegurarse de que:visited
sea el mismo que el color inicial,:hover
debe ir después:visited
.Entonces, si desea desactivar el cambio de color,
a:visited
debe venir antesa:hover
. Me gusta esto:a { color: gray; } a:visited { color: orange; } a:hover { color: red; }
Para deshabilitar el
:visited
cambio, lo diseñaría con una clase no pseudo:a, a:visited { color: gray; } a:hover { color: red; }
fuente
a:link
,a:visited
2)a:hover
3)a:active
Elimine el selector o configúrelo en el mismo color que el texto aparece normalmente.
fuente
Si usa algún preprocesador como SASS, puede usar la
@extend
función:a:visited { @extend a; }
Como resultado, verá un
a:visited
selector agregado automáticamente para cada estilo cona
selector, así que tenga cuidado con él, porque su tabla de estilos puede aumentar mucho de tamaño.Como compromiso, puede agregar @extend solo en aquellos bloques que realmente necesite.
fuente
Puede resolver este problema llamando
a:link
ya:visited
seleccionando juntos. Y síguelo cona:hover
selector.a:link, a:visited {color: gray;} a:hover {color: skyblue;}
fuente
Creo que si le pongo un color
a:visited
no es bueno: debes conocer el color predeterminado de la etiquetaa
y sincronizarlo cada veza:visited
.No quiero saber sobre el color predeterminado (se puede configurar en
common.css
su aplicación, o puede usar estilos externos).Creo que es una buena solución:
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; }
fuente
a { color: orange !important; }
!important
tiene el efecto de que la propiedad en cuestión no se puede anular a menos que!important
se utilice otra . En general, se considera una mala práctica a!important
menos que sea absolutamente necesario; sin embargo, no puedo pensar en ninguna otra forma de 'deshabilitar':visited
usando solo CSS.fuente
Utilizar:
a:visited { text-decoration: none; }
Pero solo afectará a los enlaces en los que aún no se ha hecho clic.
fuente