Un effetto che è piuttosto frequente vedere sui siti e blog di nuova generazione, sono le cosiddette scritte in overlay sopra alle immagini, molto spesso accompagnate da un background scuro semitrasparente. Ecco un esempio:
La prima cosa da fare è creare una struttura HTML come questa:
<div class="boximg"> <img border="0" src="tramonto.jpg"/> <div class="boxtesto"> <span class="testo">Un bellissimo tramonto!</span> </div> </div>Come potete vedere ho creato un DIV contenitore (con classe ".boximg") al cui interno posiziono la mia immagine ed un nuovo div (con classe ".boxtesto") che a sua volta contiene uno span che marca il testo che si vuole applicare.
Passiamo adesso a vedere il CSS che, materialmente, svolgerà il lavoro:
.boximg { position: relative; width: 400px; /* Stessa larghezza dell'immagine */ height: 300px; /* Stessa altezza dell'immagine */ } div.boxtesto { position: absolute; bottom: 0px; left: 0px; width: 100%; background: rgb(0, 0, 0); background: rgba(0, 0, 0, 0.6); } span.testo { padding: 10px; color: #FFFFFF; font: bold 24px/45px Helvetica, Sans-Serif; letter-spacing: -1px; }Il box contenitore (".boximg") ha un posizionamento relativo e dimensioni uguali a quella dell'immagine che è destinato ad ospitare.
Il codice visto in precedenza è quasi perfetto... unico neo? la
trasparenza non funziona con Internet Explorer che, in nessuna delle
versioni sin'ora rilasciate, supporta rgb e rgba!
Al fine di correggere questo difetto e rendere il nostro CSS cross-browser, dovremo far ricorso ai cari e vecchi filtri di IE:
/* Per IE 5.5, 6 e 7*/ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); /* Per IE 8*/ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";Ecco, finalmente, il nostro CSS completo:
.boximg { position: relative; width: 400px; /* Stessa larghezza dell'immagine */ height: 300px; /* Stessa altezza dell'immagine */ } div.boxtesto { position: absolute; bottom: 0px; left: 0px; width: 100%; background: rgb(0, 0, 0); background: rgba(0, 0, 0, 0.6); /* Per IE 5.5, 6 e 7*/ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); /* Per IE 8*/ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; } span.testo { padding: 10px; color: #FFFFFF; font: bold 24px/45px Helvetica, Sans-Serif; letter-spacing: -1px; }