Il tooltip (lett.: consiglio su uno strumento) è un breve messaggio a comparsa (popup), comune in diverse interfacce grafiche, in particolare quelle che prevedono un mouse od altri dispositivi di puntamento. In genere, se un elemento prevede questa interazione, il tooltip compare quando il cursore è posizionato sull'elemento, scomparendo nuovamente al suo allontanamento.[1][2]
Uno degli ambienti che ha diffuso maggiormente il tooltip è il web, soprattutto agli inizi, quando il web era principalmente accessibile tramite personal computer con un mouse. Il tooltip ha un supporto completo da tutti i principali browser web conosciuti, anche dalle loro versioni più storiche.[3] In genere, per avere un tooltip in un elemento di una pagina HTML, è sufficiente modificare il tag HTML di quell'elemento ed aggiungere l'attributo title
.[2][4]
Alcuni tooltip avanzati permettono di fissare il riquadro (che quindi rimarrà visualizzato, allo scorrere della pagina o alla chiusura del documento), agendo sulla "clip" (puntina) presente sul bordo superiore del riquadro.
Una variante molto comune, specialmente nei programmi più datati, è mostrare la descrizione dell'oggetto in una barra di stato, ma questo tipo di descrizioni non sono chiamate di solito tooltip.
Un altro sistema che mirava a risolvere lo stesso problema, fu introdotto sui computer Macintosh dal System 7, con il nome di balloon help. In questo caso il testo di aiuto compariva in una nuvoletta simile a quella utilizzata nei dialoghi dei fumetti.
Un altro termine per tooltip, utilizzato da Microsoft per la documentazione per l'utente finale, è "ScreenTip" (letteralmente: consiglio a schermo).
Esempio di tooltip in una pagina HTML:
<p>Paragrafo di esempio <span title="Testo informativo">posiziona il mouse sopra</span>.</p>
In HTML5 esiste un tooltip che si apre nativamente non al passaggio del mouse ma con un click.[5][6]. Ad esempio:
<details>
<summary>Dettagli</summary>
Contenuto mostrato al click
</details>
Esempio completo di tooltip in CSS3[7]:
<!DOCTYPE html>
<html>
<head>
<style>
.tooltip {
position: relative;
display: inline-block;
border-bottom: 1px dotted black;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 120px;
background-color: black;
color: #fff;
text-align: center;
padding: 5px 0;
position: absolute;
z-index: 1;
}
.tooltip:hover .tooltiptext {
visibility: visible;
}
</style>
</head>
<body>
<div class="tooltip">Posiziona in mouse qui sopra
<span class="tooltiptext">Testo del tooltip</span>
</div>
</body>
</html>
Esempio completo di tooltip in JavaScript con Bootstrap[8]:
<!DOCTYPE html>
<html lang="it">
<head>
<title>Esempio di tooltip con Bootstrap</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<a href="#" data-toggle="tooltip" title="Hooray!">Posiziona qui il mouse</a>
</div>
<script>
$( function(){
$( '[data-toggle="tooltip"]' ).tooltip();
} );
</script>
</body>
</html>
Sui tooltip vengono solitamente sollevate alcune considerazioni.[9][10].
Alcuni utenti potrebbero non notare il tooltip e quindi scoprire il suo contenuto anche se è evidenziato rispetto al resto del contenuto.
Anche se la pagina web è responsiva, non è detto che lo siano anche i tooltip che contiene.
Ciò significa che non è possibile in alcuni casi leggere la descrizione del tooltip e utilizzare contemporaneamente il resto dello schermo. Ad esempio non si può digitare nei campi di un form e contemporaneamente leggere le istruzioni per completarlo se sono racchiuse in un tooltip, poiché il mouse non può fare entrambe le cose contemporaneamente.
Gli utenti devono lavorare sodo per ricordare il suggerimento o passare ripetutamente da una modalità di funzionamento all'altra.
I tooltip costituiti da icone richiedono un'etichetta accessibile. Ma anche se ne hanno una, gli utenti vocali devono interpretare ciò che vedono e indovinare di cosa si tratta.
In primo luogo, è necessario utilizzare un mouse o un altro dispositivo di puntamento per utilizzare una descrizione comando che esclude gli utenti della tastiera e del touch screen.
In secondo luogo, lo stazionamento non è sempre un'intenzione per attivare un controllo. L'utente potrebbe spostare il cursore su un suggerimento che lo attiva accidentalmente.
In terzo luogo, richiede abilità motorie fini per funzionare. Gli utenti devono spostare con precisione il mouse sull'area interessata e tenerlo fermo per evitare di nasconderlo accidentalmente.
In quarto luogo, non è possibile per gli utenti degli schermi "lente di ingrandimento" (screen magnifier) spostare il proprio campo visivo senza nascondere la descrizione comando[11].
Infine, gli utenti non possono selezionare o interagire con il contenuto all'interno della descrizione comando.
È possibile fornire un'esperienza paragonabile agli utenti della tastiera mostrando il tooltip in primo piano. Ma questo non è convenzionale ed esclude gli utenti touch screen.
Ci sono alcune pratiche consigliate dalle Web Content Accessibility Guidelines[12]:
aria-describedby
o aria-labelledby
per associare il controllo dell'interfaccia utente alla descrizione comando. Evitare aria-haspopup
e aria-live
<label for="name">Nome</label>
<input id="name" type="text" aria-describedby="name-hint">
<div id="name-hint" aria-hidden="false">
Scrivi il tuo nome e cognome
</div>
title
per creare una descrizione comando