CSS :visited Pseudo Classe
La pseudo-classe CSS :visited seleziona e stilizza i link già visitati. Scopri la pseudo-classe con esempi pratici.
La pseudo-classe :visited seleziona i link (elementi <a> con un href) che
l'utente ha già visitato. Si usa per dare ai link visitati un aspetto diverso
rispetto a quelli non visitati — un classico segnale UX che indica ai lettori quali
pagine hanno già aperto.
Questa pagina spiega cosa seleziona :visited, i limiti rigidi (e insoliti) che i browser
impongono su cosa è possibile stilizzare con essa, perché esistono tali limiti e come
combinarla con gli altri stati dei link nell'ordine corretto.
a:visited {
color: #8ebf42;
}Come funziona
Un link è "visitato" quando il suo URL di destinazione è presente nella cronologia del browser. Il
browser applica gli stili :visited automaticamente — non è coinvolto né JavaScript né markup.
Non appena l'utente fa clic (o ha già visitato l'URL in precedenza), il
link corrispondente passa al suo stile visitato.
Solo gli elementi <a> con un attributo href possono corrispondere a :visited. Un'ancora priva di
href (ad es. <a>testo</a>) viene trattata come segnaposto e non corrisponde mai a
:link né a :visited.
Perché si possono stilizzare solo alcune proprietà
Storicamente, :visited poteva modificare quasi qualsiasi proprietà. Questo si è rivelato una
grave falla per la privacy: una pagina poteva disporre migliaia di link fuori schermo e usare
getComputedStyle (o effetti collaterali del layout) per rilevare quali venivano renderizzati come
"visitati" — leggendo di fatto parti della cronologia di navigazione dell'utente senza
permesso.
Per chiudere questa falla, i browser moderni limitano :visited alle sole proprietà del colore
e mentono sullo stile calcolato affinché gli script non possano rilevare la differenza.
Ecco perché impostare qualcosa come un background-image
o modificare le dimensioni del box su :visited non produce alcun effetto in modo silenzioso.
Le proprietà che i browser consentono ancora su :visited:
- color
- background-color
- border-color
- outline-color
- column-rule-color
- le parti del colore di fill e stroke
Due regole aggiuntive rendono tutto ciò sicuro:
- La modifica deve provenire direttamente da
:visited; non è possibile, ad esempio, rendere il link trasparente su:linke rivelare uno sfondo solo su:visited. - Non è possibile usare
rgba()/hsla()con trasparenza parziale per rivelare lo stato, e il canale alfa viene di fatto ignorato.
Se hai bisogno di una stilizzazione più ricca che dipenda dallo stato del link, applicala a uno stato che
non sia :visited — come :link, :hover o :focus.
L'ordine LVHA
Quando si stilizzano tutti e quattro gli stati dei link, l'ordine delle regole è importante a causa dei pareggi di specificità CSS. La convenzione è Link, Visited, Hover, Active (memorizzato come "LoVe HAte"):
a:link { color: #1c87c9; } /* unvisited */
a:visited { color: #8ebf42; } /* visited */
a:hover { color: #666666; } /* mouse over */
a:active { color: #cc0000; } /* being clicked */Se si mette :hover prima di :visited, un link visitato non mostrerà mai il suo
colore al passaggio del mouse, perché la regola :visited successiva, con la stessa specificità, prevarrebbe.
Versione
Sintassi
Sintassi CSS :visited
:visited {
css declarations;
}Esempio del selettore :visited:
Esempio di codice CSS :visited
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
a {
display: block;
padding: 5px;
}
a:visited {
color: #8ebf42;
}
</style>
</head>
<body>
<h2>:visited selector example</h2>
<a href="https://www.w3docs.com">W3docs</a>
<a href="https://stackdev.io/">Stackdev</a>
</body>
</html>Esempio del selettore :visited con link non visitato, visitato, hover e attivo:
Esempio di codice :visited
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
p {
font-size: 20px;
}
/* unvisited link */
a:link {
color: #cccccc;
}
/* visited link */
a:visited {
color: #1c87c9;
}
/* mouse over link */
a:hover {
color: #8ebf42;
}
/* selected link */
a:active {
color: #666666;
}
</style>
</head>
<body>
<h2>:visited selector example</h2>
<p>Visit our
<a href="https://www.w3docs.com/">website</a>.
</p>
</body>
</html>Selettori correlati
- :link — stilizza i link che non sono ancora stati visitati.
- text-decoration — comunemente abbinato agli stati dei link per aggiungere o rimuovere la sottolineatura.