Creare tooltip funzionali e accattivanti è un modo efficace per fornire informazioni aggiuntive all’utente senza sovraccaricare l’interfaccia. Nel panorama dello sviluppo front-end, spesso si ricorre a JavaScript per gestire effetti di hover o comportamenti dinamici. Tuttavia, con un uso attento degli pseudoclassi e delle proprietà CSS, possiamo ottenere tooltip eleganti e facili da mantenere, senza dover scrivere una sola riga di JavaScript.
Perché puntare sui tooltip in CSS
- Performance e leggerezza: Nessuna libreria aggiuntiva o script in esecuzione continua.
- Compatibilità e accessibilità: I tooltip in puro CSS, se progettati correttamente, risultano accessibili anche tramite tastiera e screen reader.
- Facilità di manutenzione: Centralizzando gli stili, eventuali modifiche sono più semplici e veloci.
Come funziona il tooltip in CSS
- Markup HTML
- Aggiungi un contenitore (es.
span,buttonodiv) per l’elemento che necessita del tooltip. - Utilizza un attributo personalizzato o un
data-attributeper memorizzare il testo del tooltip, ad esempio:
- Aggiungi un contenitore (es.
<button class="tooltip" data-tooltip="Testo del tooltip">Hover su di me</button>- Stile di base dell’elemento
- Imposta la posizione relativa sull’elemento padre (
position: relative;) affinché il tooltip possa essere posizionato correttamente:
- Imposta la posizione relativa sull’elemento padre (
.tooltip {
position: relative;
cursor: pointer;
}- Creazione del tooltip con pseudoelementi
- Con
:beforeo:after, puoi generare il contenuto del tooltip attingendo daldata-attribute:
- Con
.tooltip:hover::after {
content: attr(data-tooltip);
position: absolute;
top: -40px;
/* Valore di esempio */
left: 50%;
transform: translateX(-50%);
background-color: #333;
color: #fff;
padding: 8px 12px;
border-radius: 4px;
white-space: nowrap;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
/* Evitare che si veda se non in hover */
opacity: 1;
transition: opacity 0.2s ease-in-out;
pointer-events: none;
}
.tooltip::after {
content: "";
/* Necessario per definire le dimensioni */
opacity: 0;
/* Tooltip inizialmente invisibile */
}- Freccia del tooltip (opzionale)
- Per creare una piccola freccia rivolta verso l’elemento, usa un ulteriore pseudoelemento (
::beforeo::after) e sfrutta i bordi:
- Per creare una piccola freccia rivolta verso l’elemento, usa un ulteriore pseudoelemento (
.tooltip:hover::before {
content: "";
position: absolute;
top: -10px;
left: 50%;
transform: translateX(-50%);
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #333;
/* Mostra la freccia */
opacity: 1;
pointer-events: none;
}
.tooltip::before {
opacity: 0;
/* Freccia inizialmente invisibile */
transition: opacity 0.2s ease-in-out;
}- Accessibilità
- Considera l’uso del focus: applica un effetto simile all’
hoveranche su:focusper permettere la navigazione da tastiera.cssCopia codice
- Considera l’uso del focus: applica un effetto simile all’
.tooltip:focus::after,
.tooltip:focus::before {
opacity: 1;
}Con questi passaggi hai un tooltip completamente gestito da CSS, snello in termini di codice e altamente mantenibile. Ricordati di testare sempre l’effetto su diversi dispositivi e risoluzioni, verificando anche la leggibilità dei colori selezionati.
Accessibilità: il problema dei tooltip solo CSS
I tooltip puri CSS basati su :hover hanno un limite importante: non funzionano con la tastiera e sono invisibili agli screen reader. Per un tooltip davvero accessibile:
- Usa
:focus-visibleinsieme a:hoverper supportare la navigazione da tastiera. - Aggiungi
role="tooltip"earia-describedbyall’elemento trigger. - Valuta la Popover API nativa (supportata da tutti i browser moderni dal 2024): gestisce focus trap, Esc per chiudere e accessibilità automaticamente.
/* Tooltip visibile anche via tastiera */
.trigger:hover .tooltip,
.trigger:focus-visible .tooltip {
opacity: 1;
visibility: visible;
}Quando usare JavaScript
Per tooltip su dispositivi touch (dove :hover non esiste), o quando il contenuto del tooltip è dinamico, vale la pena aggiungere un piccolo script o usare una libreria leggera come Floating UI che gestisce anche il posizionamento automatico quando il tooltip va fuori schermo.
CSS anchor positioning: il futuro dei tooltip
La nuova CSS Anchor Positioning API, supportata da Chrome dal 2024 e in arrivo su tutti i browser nel 2026, rivoluziona i tooltip: puoi ancorare un elemento flottante a qualsiasi altro elemento nella pagina senza JavaScript e senza calcoli di posizione manuale. Il browser gestisce automaticamente lo spostamento quando il tooltip va fuori schermo.
.tooltip {
position: absolute;
position-anchor: --my-button;
top: anchor(bottom);
left: anchor(center);
translate: -50% 8px;
}Questa API eliminerà gran parte dei casi d’uso di librerie come Popper.js o Floating UI.
Hai trovato utile questo Articolo? Continua a seguire Cyberalchimista sui social (@cyberalchimista) per altri tutorial e consigli sullo sviluppo web! Se hai domande o vuoi condividere i tuoi progetti contattaci.

