Muszę wyłączyć zmianę koloru tagu kotwicy podczas odwiedzania. Ja to zrobiłem:
a:visited{ color: gray }
(Link jest szary przed odwiedzeniem). Ale w ten sposób wyraźnie określam kolor po odwiedzeniu linku, co jest znowu zmianą koloru.
Jak mogę wyłączyć zmianę koloru tagu kotwicy podczas odwiedzin bez dokonywania żadnych wyraźnych zmian koloru?
a
byća:link
?a:link
aa
to nie to samo. Kotwica niekoniecznie musi być łączem. Zwykle zmienia kolor tylko wtedy, gdy zawiera link.Jeśli chcesz, aby kolor kotwicy pozostał taki sam jak element nadrzędny kotwicy, możesz wykorzystać dziedziczenie:
a, a:visited, a:hover, a:active { color: inherit; }
Zauważ, że nie ma potrzeby powtarzania reguły dla każdego selektora; po prostu użyj listy selektorów oddzielonych przecinkami (kolejność ma znaczenie dla pseudoelementów kotwicy). Możesz także zastosować pseudoselektory do klasy, jeśli chcesz selektywnie wyłączyć specjalne kolory zakotwiczeń:
.special-link, .special-link:visited, .special-link:hover, .special-link:active { color: inherit; }
Twoje pytanie dotyczy tylko odwiedzonego stanu, ale założyłem, że masz na myśli wszystkie stany. Możesz usunąć inne selektory, jeśli chcesz zezwolić na zmiany kolorów na wszystkich oprócz odwiedzanych.
źródło
a:link
być domyślny kolor linku (zazwyczaj niebieski) i mająa:visited
Dziedzicz że bez sztywnego kodowania „niebieski” w dowolnym miejscu?Aby
:hover
nadpisać:visited
i upewnić się, że:visited
jest taki sam jak kolor początkowy,:hover
musi nastąpić później:visited
.Więc jeśli chcesz wyłączyć zmianę koloru,
a:visited
musisz wcześnieja:hover
. Lubię to:a { color: gray; } a:visited { color: orange; } a:hover { color: red; }
Aby wyłączyć
:visited
zmianę, nadasz jej styl, używając innej niż pseudoklasy:a, a:visited { color: gray; } a:hover { color: red; }
źródło
a:link
,a:visited
2)a:hover
3)a:active
Usuń selektor lub ustaw go na ten sam kolor, w jakim normalnie pojawia się tekst.
źródło
Jeśli używasz preprocesora, takiego jak SASS, możesz użyć
@extend
funkcji:a:visited { @extend a; }
W rezultacie zobaczysz automatycznie dodany
a:visited
selektor dla każdego stylu za
selektorem, więc bądź z nim ostrożny, ponieważ twoja tabela stylów może znacznie się powiększyć.Jako kompromis możesz dodać @extend tylko w tych blokach, których naprawdę potrzebujesz.
źródło
Możesz rozwiązać ten problem, dzwoniąc razem
a:link
ia:visited
selektory. I postępuj zgodnie z nim za pomocąa:hover
selektora.a:link, a:visited {color: gray;} a:hover {color: skyblue;}
źródło
Myślę, że jeśli ustawię dla
a:visited
niego kolor , to nie jest dobre: musisz znać domyślny kolor tagua
i za każdym razem go synchronizowaća:visited
.Nie chcę wiedzieć o domyślnym kolorze (można go ustawić w
common.css
swojej aplikacji lub użyć zewnętrznych stylów).Myślę, że to fajne rozwiązanie:
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; }
źródło
a { color: orange !important; }
!important
powoduje, że dana właściwość nie może zostać zastąpiona, chyba że!important
zostanie użyta inna . Ogólnie uważa się,!important
że używanie go, o ile nie jest to absolutnie konieczne, jest złą praktyką ; jednak nie przychodzi mi do głowy żaden inny sposób „wyłączania”:visited
tylko przy użyciu CSS.źródło
Posługiwać się:
a:visited { text-decoration: none; }
Ale wpłynie to tylko na linki, które nie zostały jeszcze kliknięte.
źródło