Creare uno slideshow di immagini con CSS
Per creare un semplice slideshow di immagini, cioè una serie di immagini che appaiono in sequenza sullo schermo, non sono necessarie ore di programmazione in flash, ma bastano 5 minuti di CSS e Javascript, che mantengono il sito conforme agli standard W3C e degradano in modo accettabile nei browser che non sono compatibili con javascript oppure non visualizzano le immagini.
Inseriamo il codice html seguente nella pagina:
<div id="photodiv">
<img id="photoimg" src="foto1.jpg" />
</div>
Quindi importiamo un file Javascript che contiene il seguente codice:
var gblPhotoShufflerDivId = "photodiv";
var gblPhotoShufflerImgId = "photoimg";
var gblImg = new Array(
"foto2.jpg",
"foto3.jpg",
"foto4.jpg",
"foto5.jpg",
"foto6.jpg",
"foto7.jpg",
"foto8.jpg",
"foto1.jpg");
var gblPauseSeconds = 4.00;
var gblFadeSeconds = 1.45;
var gblRotations = 100;
var gblDeckSize = gblImg.length;
var gblOpacity = 100;
var gblOnDeck = 0;
var gblStartImg;
var gblImageRotations = gblDeckSize * (gblRotations+1);
window.onload = photoShufflerLaunch;
function photoShufflerLaunch()
{
var theimg = document.getElementById(gblPhotoShufflerImgId);
gblStartImg = theimg.src; // save away to show as final image
document.getElementById(gblPhotoShufflerDivId).style.backgroundImage='url(' + gblImg[gblOnDeck] + ')';
setTimeout("photoShufflerFade()",gblPauseSeconds*1000);
}
function photoShufflerFade()
{
var theimg = document.getElementById(gblPhotoShufflerImgId);
// determine delta based on number of fade seconds
// the slower the fade the more increments needed
var fadeDelta = 100 / (30 * gblFadeSeconds);
// fade top out to reveal bottom image
if (gblOpacity < 2*fadeDelta )
{
gblOpacity = 100;
// stop the rotation if we're done
if (gblImageRotations < 1) return;
photoShufflerShuffle();
// pause before next fade
setTimeout("photoShufflerFade()",gblPauseSeconds*1000);
}
else
{
gblOpacity -= fadeDelta;
setOpacity(theimg,gblOpacity);
setTimeout("photoShufflerFade()",30); // 1/30th of a second
}
}
function photoShufflerShuffle()
{
var thediv = document.getElementById(gblPhotoShufflerDivId);
var theimg = document.getElementById(gblPhotoShufflerImgId);
// copy div background-image to img.src
theimg.src = gblImg[gblOnDeck];
// set img opacity to 100
setOpacity(theimg,100);
// shuffle the deck
gblOnDeck = ++gblOnDeck % gblDeckSize;
// decrement rotation counter
if (--gblImageRotations < 1)
{
// insert start/final image if we're done
gblImg[gblOnDeck] = gblStartImg;
}
// slide next image underneath
thediv.style.backgroundImage='url(' + gblImg[gblOnDeck] + ')';
}
function setOpacity(obj, opacity) {
opacity = (opacity == 100)?99.999:opacity;
// IE/Win
obj.style.filter = "alpha(opacity:"+opacity+")";
// Safari<1.2, Konqueror
obj.style.KHTMLOpacity = opacity/100;
// Older Mozilla and Firefox
obj.style.MozOpacity = opacity/100;
// Safari 1.2, newer Firefox and Mozilla, CSS3
obj.style.opacity = opacity/100;
}
Nella parte iniziale del codice Javascript, nella variabile gblImg, bisogna inserire il path delle immagini che sono successive alla prima nello slideshow.
Lo slideshow termina di nuovo con la prima immagine.
Se il browser utente non dispone di Javascript, viene visualizzata soltanto la prima immagine dello slideshow.
Ulteriori dettagli su questo script si possono trovare sul sito dell'autore. Lo slideshow è rilasciato su licenza creative commons.
-
Feeds
Segui il feed RSS e Twitter per restare sempre aggiornato!
-
-
Ultimi commenti
- Marco: Scusate ma non riesco a far funzionare l’utilissimo metodo indicato. Ho creato modulo html...
- Syd: you’re awesome. …..
- anna: alla prima installazione ho avuto qualche problema con la memoria, poi ho sistmeato. Ottimo !!
- Antonio: Ciao volevo chiederti alcune info. Io devo creare un socialnetwork con funzioni simili a Facebook però...
- massimo: sono capitato qui da un link postato da mau_develop in risposta ad un mio quesito sul forum di joomla.it:...
-
Ultimi post
