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.
Tags: CSS, Grafica, Javascript, Web, Web DesignArticoli correlati:

August 29th, 2007 at 1:56 pm
Il punto però, è che unisce ed usa anche java ed allora non vedo perché fare il tutto in css se l’animazione avviene tramite java. Serve invece capire come sia possibile solo con formato css escludendo a priori l’uso di java od altro. Io ho già ottenuto qualcosa, ma ancora non mi sembra valido in quanto troppo articolato; sono in via di cambiamenti e in caso se ti potrà servire ti posterò i risultati e magari qualcosa da provare. Tieni però presente che uso Linux..
August 29th, 2007 at 2:15 pm
Questo è uno dei metodi più semplici che ho trovato per realizzare questo slideshow, l’html rimane molto intuitivo e rimane l’import di un file .js, che non complica il codice.
Vorrei chiarire che non è Java ma JavaScript, che -somiglianza del nome a parte- sono due cose completamente diverse.
Fammi sapere quando riesci a trovare una soluzione usando solo i CSS.
October 11th, 2007 at 4:10 pm
Scusa se ti disturbo per una cosa che probabilmente ritterrai scontata, ma puoi darmi qualche istruzione in più per applicare questo metodo alla pagina web.
Grazie in ogni caso.
October 11th, 2007 at 5:40 pm
Ciao, cosa non hai capito in particolare? Quali informazioni ti servono?
October 15th, 2007 at 5:53 pm
Scusa se non ti ho risposto subito, ma sono stato fuori città, comunque ho deciso di soprassedere e di farmi un pò le ossa con le basi del codice. Ti ringrazio per ora a presto e grazie.
November 5th, 2008 at 11:13 am
ciao, sono un po’ ignorante in questo campo ma cerco di migliorarmi.
come puoi vedere nel link della mia pagina web ho usato aruba nuke ma adesso vorrei inserire una slideshow di immagini.
ho trovato la tua guida per caso…e s embra molto semplice peccato che non so come importare un file javascript….
puoi aiutarmi?
grazie
lisa
November 6th, 2008 at 2:54 pm
Ciao Lisa, per importare un file Javascript basta inserire nell’header della pagina web (dentro il tag head) in questo modo:
<script language=”javascript” type=”text/javascript” src=”file.js”></script>
Non conosco Aruba Nuke per cui non so dirti precisamente come fare per aggiungere questa riga di codice…