Podświetl odwiedzone linki — i dlaczego CSS pozwala na tak mało
Wyniki wyszukiwania, lista artykułów, dokumentacja — i nijak nie poznasz, które linki już otwierałeś. Jedna reguła CSS to naprawia. Ale przy okazji warto poznać, dlaczego selektor :visited jest tak dziwnie okrojony.
Reguła
W zakładce CSS reguły, wzorzec URL na stronę z listami linków albo * globalnie:
a:visited {
color: #9333ea !important;
}
Tyle. Odwiedzone linki robią się fioletowe. Wybierz kolor mocno różny od koloru zwykłego linku, żeby kontrast był czytelny od razu.
Dlaczego tak mało da się zrobić
Naturalny odruch: skoro mogę zmienić kolor, to dodam też ikonę albo tło. Nie dodasz — i to celowo.
Gdyby :visited pozwalał na dowolne style, dowolna strona mogłaby wykryć Twoją historię. Wstawiłaby tysiąc ukrytych linków, każdemu nadała przez :visited inny rozmiar albo tło, zmierzyła layout JavaScriptem i odczytała, które URL-e odwiedziłeś. To była realna podatność (history sniffing) — i przeglądarki ją zamknęły.
Co wolno, czego nie
Na :visited działają wyłącznie właściwości kolorów: color, background-color, border-color, outline-color. I nawet one są „kłamane" w jedną stronę:
- Brak właściwości układu.
display,font-size,content,visibility— ignorowane na:visited. Dlategoa:visited::after { content: " ✓" }nie zadziała. - getComputedStyle kłamie. Odpytany o kolor odwiedzonego linku zwróci kolor nieodwiedzonego — żeby JavaScript nie mógł odczytać prawdy.
- Tło i ramka muszą być wcześniej widoczne. Możesz zmienić kolor tła, ale nie da się go „włączyć" od zera w sposób mierzalny.
Chcesz więcej niż kolor?
Odznaki, ikony, liczniki odwiedzin — tego :visited nie da. Wymagałyby śledzenia Twojej historii w JavaScript, co jest osobnym, znacznie cięższym tematem. Dla większości przypadków sam kolor w zupełności wystarcza — bo jedyne, czego naprawdę potrzebujesz, to „byłem tu czy nie".
Pułapki
- Dopasowanie po dokładnym URL.
:visitedzadziała, jeśli odwiedziłeś dokładnie ten adres. Link do/artykulnie zaświeci się, gdy byłeś na/artykul?ref=x. - SPA i linki. W aplikacji single-page „przejście" bywa zmianą stanu bez prawdziwej nawigacji — przeglądarka nie zapisuje wtedy wpisu w historii i
:visitednie zadziała. - Kontrast. Fiolet na białym tle jest czytelny; na ciemnym motywie dobierz jaśniejszy odcień.
Zobacz też
- Przykłady — ten snippet i inne gotowce CSS
- Tryb ciemny dla każdej strony — kolejna reguła CSS na komfort
- Ukryj cookie bannery — CSS-owe sprzątanie strony
Zainstaluj JustZix — i od pierwszego rzutu oka wiedz, gdzie już byłeś.
Oceń ten wpis
Brak ocen — oceń jako pierwszy.