1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| (function($) {
$.slider = function(element, options) {
var $this = this,
$slider = $(element),
$slide = $('.slide', $slider),
nbslide = $slide.length,
i_current = -1,
i_last = null;
$this.init = function() {
// on cache chaque slide
$slide.hide();
$this.next();
setInterval(function(){
$this.next();
}, 2000);
};
$this.next = function() {
// index slide actuel
if(i_current>=nbslide-1){i_current=0}else{i_current++};
// index derniere slide
i_last = i_current-3;
if (i_last < 0 ) i_last = nbslide+i_last;
// on lance l'anim
animate( i_last, i_current );
};
var animate = function( index_last, index_next ) {
// selection des slides a animer
$next_slide = $slide.eq(index_next);
$last_slide = $slide.eq(index_last);
// on reoganise le zindex de chaque slide
$slide.each(function(index){
var numSlide = i_current-index;
if ( numSlide < 0) numSlide = nbslide + numSlide;
$slide.eq( numSlide ).css( 'z-index', nbslide-index );
});
// on fait apparaitre le slide actuel
$next_slide.fadeIn(1000, function(){
// une fois l'anim fini, on fait disparaitre le dernier slide
$last_slide.fadeOut(1000);
});
};
$this.init();
};
$.fn.slider = function(options) {
return this.each(function() {
if (undefined == $(this).data('slider')) {
var plugin = new $.slider(this, options);
$(this).data('slider', plugin);
}
});
};
})(jQuery); |
Partager