/** * Copyright(C), 2013-2014 ZheJiang Aisino Spaceflight Technology Co., Ltd. * FileName: jquery.slide.js * Author: Aniu[date:2014-03-25 08:57] * Update: Aniu[date:2014-05-05 12:05] * Version: v2.1.1 */ $.fn.slide = function(o){ o = $.extend({ resize:false, backdrop:false, width:1000, delay:4000, speed:800, button:true, fadeIn:false, title:false, thumb:false, auto:true, ease:null }, o||{}); return this.each(function(){ $(this).wrapInner('
'); var _this = $(this), self = $(this).children('.ui-slidewrap'), width = (($(window).width() >= o.width) && o.resize) ? $(window).width() : self.width(o.width).width(); var scroll = self.children('.ui-slide'), size = scroll.children('li').width(width).size(), list = thumb = ''; if(o.resize){ $(window).resize(function(){ width = $(this).width() >= o.width ? self.width($(this).width()).width() : self.width(o.width).width(); scroll.css({left:-config.index*width}).width(width*(size+1)); scroll.children('li').width(width); }); } for(var i=1; i<=size; i++){ list += ''+ i +''; thumb += ''; } $('
'+ list +'
').appendTo(self); if(o.thumb){ $('
\
\
\

'+ thumb +'

\
').appendTo(_this); var thumb = _this.children('.ui-slide-thumb'), thumbWrap = thumb.children('.ui-slide-thumb-img'), thumbScroll = thumbWrap.children('p'), thumButton = thumb.children('.ui-slide-thumbtn'), thumbItems = thumbScroll.children('span'), thumbSize = thumbItems.size(), thumbWidth = thumbItems.outerWidth() + parseInt(thumbItems.css('marginRight')), thumbCount = Math.ceil(thumbWrap.width()/thumbWidth), thumbCwidth = thumbWidth*thumbCount, offset = 0, pbtm = thumb.outerHeight() + parseInt(thumb.css('marginTop')) + parseInt(thumb.css('marginBottom')); if(($.browser.msie && $.browser.version !== '6.0') || !$.browser.msie){ _this.css('paddingBottom', pbtm); } thumbScroll.width(thumbWidth*thumbSize); if(thumbSize<=thumbCount || !thumbSize){ thumButton.addClass('s-dis'); } thumButton.on('click', function(){ if(!$(this).hasClass('s-dis')){ var thumBtn = $(this), thumbLeft = Math.abs(thumbScroll.position().left), thumbNum = (thumbLeft+(thumbCwidth))/thumbWidth; if(thumBtn.hasClass('ui-slide-thumb-prev')){ if(thumbNum-thumbCount > thumbCount){ offset = -thumbCwidth; thumbMove(thumBtn, offset); } else{ offset = -(thumbNum-thumbCount)*thumbWidth; thumbMove(thumBtn, offset, true); } thumb.find('.ui-slide-thumb-img span:eq('+ (thumbLeft/thumbWidth-1) +')').click(); } else{ if(thumbSize-thumbNum > thumbCount){ offset = thumbCwidth; thumbMove(thumBtn, offset); } else{ offset = (thumbSize-thumbNum)*thumbWidth; thumbMove(thumBtn, offset, true); } thumb.find('.ui-slide-thumb-img span:eq('+ thumbNum +')').click(); } } }); function thumbMove(obj, offset, disabled){ if(!thumbScroll.is(':animated')){ thumbScroll.animate({left:['-='+offset+'',"easeOutCirc"]}, 450, function(){ obj.siblings('.ui-slide-thumbtn').removeClass('s-dis'); if(disabled){ obj.addClass('s-dis'); } }); } } } var config = { index : 0, timer : null, timer2 : null, showCount:0, btns : '', title : '
', prev : function(){ if(!scroll.is(':animated')){ if(this.index == 0){ this.index = size; scroll.css({left:-width*this.index}); } this.index -= 1; this.move('prev'); } }, next : function(){ if(!scroll.is(':animated')){ if(this.index == size){ this.index = 0; scroll.css({left:0}); } this.index += 1; this.move('next'); } }, click : function(index){ this.index = index; this.move(); }, move : function(pos){ var that = this; if(o.thumb){ var thumbLeft = Math.abs(thumbScroll.position().left), thumbNum = (thumbLeft+(thumbCwidth))/thumbWidth; if(pos === 'next' && this.index === thumbNum){ _this.find('.ui-slide-thumb-next').click(); } else if(pos === 'prev' && thumbNum-thumbCount == this.index+1){ _this.find('.ui-slide-thumb-prev').click(); } } clearTimeout(this.timer2); this.timer2 = setTimeout(function(){ if(o.backdrop){ var li = scroll.find('li:eq('+ that.index +') a'), src = li.data('src'); li.css('backgroundImage').lastIndexOf(src) == -1 && li.css({'background':'url('+ src +') no-repeat center'}); } else{ var img = scroll.find('li:eq('+ that.index +') img'); (!!img.data('src') && (img.attr('src') !== img.data('src'))) && img.attr('src', img.data('src')); } }, 0); !o.fadeIn ? scroll.stop(true, false).animate({left:[-this.index*width,"easeOutCirc"]}, o.speed, o.ease) : scroll.css({left:-this.index*width, opacity:0}).stop().animate({opacity:1}, 450); (o.title === true) && self.find('.ui-slide-title span').text(scroll.find('li:eq('+this.index+') img').attr('alt')); _this.find('.ui-slide-thumb-img span:eq('+ (this.index < size ? this.index : 0 ) +')').addClass('s-crt').siblings().removeClass('s-crt'); self.find('.ui-slide-list b:eq('+ (this.index < size ? this.index : 0 )+')').addClass('s-crt').siblings().removeClass('s-crt'); }, auto : function(){ var that = this; this.timer = setInterval(function(){ that.next(); }, o.delay); }, init : function(){ var that = this, li0 = scroll.children('li:eq(0)'); o.button && $(this.btns).appendTo(self); if(o.title === true){ $(this.title).appendTo(self); } scroll.append(li0.find('img').attr('src', li0.find('img').data('src')).end().clone()); scroll.width((size+1)*width); _this.find('.ui-slide-thumb-img').on('click', 'span', function(){ that.click($(this).index()); }); _this.find('.ui-slide-prev').click(function(){ if(o.thumb && that.index == 0){ return false; } that.prev(); }); _this.find('.ui-slide-next').click(function(){ if(o.thumb && that.index == size-1){ return false; } that.next(); }); self.find('.ui-slide-list').on('click', 'b', function(){ that.click($(this).index()); }).children('b:eq(0)').click(); /* self.hover(function(){ $(this).find('.ui-slide-btn').fadeIn(); }, function(){ $(this).find('.ui-slide-btn').stop(true, false).fadeOut(); });*/ if(o.auto === true){ this.auto(); _this.hover(function(){ //$(this).find('.ui-slide-btn').fadeIn(); clearInterval(that.timer); }, function(){ that.auto(); //$(this).find('.ui-slide-btn').fadeOut(); }); } } } config.init(); }); }