jQuery: slideshow automatico con dissolvenza

Il metodo fadeOut() di jQuery non solo modifica l'opacità di un elemento, ma imposta anche la sua proprietà display su none. Ciò significa che l'elemento corrente viene rimosso dal layout della pagina e non influenza più gli elementi che lo circondano. In una serie di immagini flottate, usare questo metodo significa mostrare un'immagine alla volta. Vediamo come.

Partiamo da questa struttura HTML:


<div id="slideshow">
	<div id="slideshow-wrapper">
		<img src="1.jpg" alt="" />
		<img src="2.jpg" alt="" />
		<img src="3.jpg" alt="" />
		<img src="4.jpg" alt="" />
	</div>
</div>

Con i seguenti stili CSS:


#slideshow {
	margin: 2em auto;
	width: 380px;
	height: 250px;
	position: relative;
	border: 5px solid #313131;
	overflow: hidden;
}

#slideshow-wrapper {
	width: 1520px;
	height: 250px;
	position: relative;
	background: #666;
}

#slideshow-wrapper img {
	width: 380px;
	height: 250px;
	float: left;
}

Ora dobbiamo creare un timer ciclico che incrementi e resetti un contatore con cui andremo a selezionare l'immagine corrente tramite il metodo eq():


var Slider = new function() {

	var index = -1;
	var wrapper = $('#slideshow-wrapper', '#slideshow');
	var images = $('img', wrapper);
	
	var slide = setInterval(function() {
	
		index++;
		
		if(index == images.length) {
		
			index = 0;
			
			images.fadeIn();
		
		}
		
		images.eq(index).fadeOut(2000);
	
	
	}, 2000);
	
	this.init = function() {
	
		slide();
	
	};

}();

$(function() {

	Slider.init();

});

Come si può notare, le immagini scompaiono in sequenza e l'una mostra l'altra che la segue. Quando il contatore raggiunge il limite posto dal numero di immagini, questo viene resettato e tutte le immagini vengono fatte riapparire di nuovo.

Potete visionare l'esempio finale in questa pagina.

Torna su