
Due funzioni jQuery e qualche riga CSS…
Se non abbiamo esigenze particolarmente elaborate, la strada migliore da percorrere per realizzare uno script che si occupi di mostrarci le descrizioni delle immagini presenti nell’alt tag, è quella di scriversi il tutto da sè senza ricorrere a plugin esterni. Come fare? Vediamo passo passo quali sono le attenzioni da prestare, basteranno 8/10 di codice jQuery e qualche “precauzione” CSS!
Uno script orientato al SEO
Dal momento che l’attributo alt
delle immagini possiede ancora una certa importanza nel SEO, perchè non sfruttarlo per ottimizzare le nostre pagine? Quello che andiamo a fare con il nostro script jQuery sarà semplicemente di prelevare il contenuto di questo attributo e mostrarlo in un div sovrapposto alla nostra immagine!
In questo modo soddisferemo sia le esigenze dell’utente che visualizzerà la descrizione, sia quelle del motore di ricerca che, non potendo vedere il javascript, avrà comunque la sua descrizione a disposizione.
CSS
Devo ammettere che prima di realizzare la versione cross-browser avevo utilizzato la proprietà inline-block
per impilare le immagini in modo che si riadattassero nel caso lo schermo venisse ristretto… Tuttavia la tristezza per il risultato mostrato su IE ha fatto prevalere il sentimento di “compatibilità” ed quindi optare per la soluzione standard del float
…
Per quanto riguarda la parte essenziale del nostro progetto invece (ovvero il mostrare una descrizione al mouseover), ho giocato sul concetto di maschera.
Teniamo da parte il contenitore per le polaroid di sfondo, il div box-mask
è un semplice div
relativo che funge da maschera ad un div assoluto description
posizionato ad un livello di z-index
superiore, ma “nascosto” settando bottom
negativo pari alla sua stessa altezza. E’ stato poi utilizzato il sistema di colori RGBA per realizzare l’effetto di trasparenza solo sul colore di sfondo e non sul testo. Purtroppo sui browser più datati la trasparenza non è visibile. Per ovviare si potrebbe utilizzare la proprietà opacity
perdendo però la possibilità appena descritta, ed ottenendo quindi un testo trasparente. Ai posteri l’ardua sentenza :).
Riassumendo quindi, il codice css utilizzato nell’esempio, necessario al nostro scopo, con le proprietà appena descritte sarà:
.box { width:201px; height:215px; margin:5px 0; background:url(background-polaroid.png) no-repeat; z-index:0; padding:15px 14px 0 15px; float:left; } .box-mask { position:relative; z-index:1; overflow:hidden; width:200px; height:200px; } .description { position:absolute; left:0; z-index:2; bottom:-60px; background: #000; background: rgba(0,0,0,0.6); color:#fff; width:180px; height:40px; padding:10px; }
Il codice jQuery
Buona parte del lavoro l’abbiamo fatto via CSS, ora tramite jQuery diamo vita al tutto realizzando un’animazione (usando la funzione animate()) al passaggio del mouse sopra le nostre foto (funzione hover()), prelevando l’attributo alt e mostrandolo in un div ad-hoc!
$(".box-mask").hover( function (){ altTag = $(this).find("img").attr("alt"); $(this).find(".description").append(""+altTag+""); $(this).find(".description").animate({bottom: '0'}, 100); }, function (){ $(this).find(".description").animate({bottom: '-60'}, 100); $(this).find(".description span").remove(); } );
Supporto browser
Dulcis in fundo, il supporto ai browser. La funzionalità è garantita su tutti i browser, recenti e non. L’unico fattore, come analizzato in precedenza, di distinzione tra moderni e “obsoleti” sarà la trasparenza del div
contenente la descrizione :)