JavaScript  »  Articoli  »  JQuery 

Slideshow casuale con jQuery

di: Egidio Murru     18 Maggio 2009

Una volta impostato il posizionamento dobbiamo passare a definire l'altezza che il div #slideshow conterrà. Questo perché altrimenti si andranno a vedere le altre immagini “scorrere” al di sotto di quella impostata.

È importante notare anche che ho definito tre differenti valori di posizionamento con z-index per controlli diversi: così li potremo controllare meglio con lo script jQuery.

Nel codice CSS abbiamo impostato per il div #slideshow un posizionamento relativo e un'altezza di 350 pixel, considerando che tutte le immagini della nostra galleria sono delle stesse dimensioni.

Per quanto riguarda le immagini caricate all'interno del div #slideshow, queste avranno un posizionamento assoluto, un'opacità pari a zero ed uno z-index: 8; il valore più piccolo utilizzato, quindi sempre sotto. Questo accorgimento serve per evitare di avere un vuoto nella transizione tra un'immagine e l'altra.

La classe .active invece serve proprio per far risultare sempre sopra tutte le altre immagini quella attiva, e per questo impostiamo uno z-index: 10 e un'opacità pari ad 1. Questa classe serve anche per far portare l'immagine successiva in cima alla pila delle altre immagini.

Lo script jQuery

A questo punto lavoriamo sul framework jQuery e sul nostro script:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript" src="slideshow.js"></script>

Come si vede, preferisco sempre utilizzare il percorso assoluto per il richiamo di jQuery e ho creato un file denominato slideshow.js che racchiude il controllo del nostro slideshow.

Lo script è stato pensato per far apparire le immagini, in maniera casuale, sopra la prima che risulta attiva.

function slideShow() {
    var $active = $('#slideshow img.active');

    if ( $active.length == 0 ) $active = $('#slideshow img:last');

	// 3 linee che servono per far comparire le immagini in ordine casuale
	var $sibs  = $active.siblings();
    var rndNum = Math.floor(Math.random() * $sibs.length );
    var $next  = $( $sibs[ rndNum ] );

    $active.addClass('last-active');

    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

$(function() {
    setInterval( "slideShow()", 4000 );
});

Il codice è suddiviso in tre tronconi principali: la prima porzione si legherà al CSS e alla classe .active, la quale farà comparire le immagini sopra la prima impostata da noi.

Il secondo pezzo, quello commentato, permette, in base ad una casualità matematica, la visione delle immagini che abbiamo scelto di abbinare.

Il terzo troncone controlla l'opacità delle immagini durante la fase di transizione e la velocità di cambio tra un'immagine e l'altra.

L'esempio è disponibile per il download.

Guide JavaScript

Guida Node.js

Il framework che permette di per usare V8, l'interprete JavaScript...

Canvas, guida ai framework

Canvas, tra gli elementi di HTML5 è forse quello di maggior impatto....

Guida jQuery UI

Creare siti ricchi e dinamici con jQuery UI, il progetto ufficiale...

Altre guide

Newsletter @JavaScript

Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso JQuery e Ajax per Webmaster

03 Luglio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti