jQuery: un semplice script per creare tooltip configurabili.

L’effetto che vogliamo ottenere è quello utilizzato in questo sito web: http://www.giorgiopirrotta.com/filatelico.php.

Appena passiamo su la miniatura appare un tooltip semitrasparente che ci mostra il titolo dell’opera, la cosa buona è che il titolo dell’opera mostrato viene preso direttamente dall’attributo alt dell’immagine.

Inoltre il box che appare è un div la cui visualizzazione è gestita mediante i css, quindi è ampiamente configurabile.

La versione di jQuery utilizzata in questo sito è la 1.4.2 caricata direttamente sul server, ma nulla ci vieta di usare le versioni in hosting su altri server (es. google).

Per prima cosa costruiamo il div a cui abbiamo assegnato id #box che avrà la funzione di tooltip, vediamo prima le regole css e poi l’HMTL:

#box{
	position:absolute;
	display:none;
	top:0;
	right:0;
	width:120px;
	height:auto;
	border:#633 1px solid;
	background-color:#966;
	font-family:Verdana, Geneva, sans-serif;
	font-size:15px;
}

Ci sono 2 cose che vanno notate, abbiamo assegnato la posizione absolute, e il display none, questi 2 valori sono fondamentali per il corretto funzionamento del nostro box.
Per inserire il div nella pagina abbiamo utilizzato il seguente codice:

Essendo tale box posizionato in maniera assoluta possiamo dire con una certa approssimazione che dove mettiamo tale codice è indifferente.
In realtà basta non inserirlo all’interno di un altro div con posizione relativa o assoluta.

Le immagini sono state posizionate dentro un div a cui è stata assegnata classe dpNone.
Adesso abbiamo tutte le informazioni per scrivere il codice jQuery:

$('div.dpNone img').mousemove(function(e){
	$('#box').fadeTo(25,0.85);
	$('#box').html($(this).attr('alt'))
	$('#box').css({
				 'top':e.pageY+5,
				 'left':e.pageX+5,
	 })
 });
$('div.dpNone img').mouseleave(function(){
	$('#box').hide()
})

Il codice sul mouseleave non necessita commenti, mentre possiamo dedicare un po’ di attenzione a queste due chiamate

$('#box').html($(this).attr('alt'))
$('#box').css({
	 'top':e.pageY+5,
	 'left':e.pageX+5,
 })

$(‘#box’).html($(this).attr(‘alt’)) prende il contenuto dell’attributo alt mediate il metodo attr(9 dell’attuale immagine e lo insericsce come HTML all’interno del nostro box (metodo html()), in pratica legge l’alt dell’attuale immagine e lo scirve nel box.

Poi mediante il metodo css() posizioniamo il box dove attualmente è posizionato il mouse, in realtà lo posizioniamo un po’ più a sinistra e un po’ più in basso, in quanto se lo posizionassimo esattamente dov’è il mouse non saremmo più sulla miniatura e verrebbe lanciato l’evento mouseleave() e quindi il box verrebbe chiuso.