forked from springlong/jquery-slide
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.slide.min.js
1 lines (1 loc) · 5.94 KB
/
jquery.slide.min.js
1
!function(t,e,s){function n(s){var n,i=s.lists,o=s.parent,a=s.cansee,r=s.cfg,l=r.seamless,c=r.scrollLen;n=s.pages=l?Math.ceil(i.length/c):s.pages;var u="scrollx"===r.effect,d=u?i.outerWidth(!0):i.outerHeight(!0),f=d*c,h=(a-c)*d,g=i.length%c,p=0===g?0:c-g,v=d*p,m=f*(n-1)-(r.allowBlank?0:v),b=0;!function(){if(l){var c,h,g,C=i.length;0!==p&&(g=u?"marginRight":"marginBottom",i.last().css(g,function(t,e){return parseInt(e)+v})),c=i.slice(-a+p).clone(!0),c.attr("data-clone",function(t){return C-(c.length-t)}),h=i.slice(0,a).clone(!0),h.attr("data-clone",function(t){return t}),i=o.prepend(c).append(h).children(),b=d*a,m=f*(n-1)+b}if("static"===o.css("position")&&o.css("position","relative"),u){var w=i.width();i.css({"float":"left",width:w}),o.css("width",d*i.length+(l?2*v:0)),1!==a||!r.doResize&&w!==e(t).width()||e(t).resize(function(){f=d=o.parent().width(),m=f*(n-1),l&&(b=d*a,m+=b),i.css("width",d),o.css("width",d*i.length),s.process(s.old,s.old,"must")})}}(),s.init(function(t,e,i){var g,p,v="must"===i?0:r.duration;if(l){var C=u?"left":"top";0===t&&e===n-1&&"next"===i?o.css(C,-h):t===n-1&&0===e&&"prev"===i&&o.css(C,-m-b+(a-c)*d)}g=t===n-1?m:f*t+b,p=u?{left:-g}:{top:-g},o.stop().animate(p,v,r.easing,function(){s.done()})})}function i(t){var e=t.lists,s=t.cfg,n=s.effect,i=s.easing,o=s.scrollLen,a=function(){t.done()};"fade"===n?("static"===t.parent.css("position")&&t.parent.css("position","relative"),"absolute"!==e.css("position")&&e.css({position:"absolute",left:0,top:0}),e.hide().eq(t.cur).show(),t.init(function(t,n,o){var r="must"===o?0:s.duration;e.eq(n).stop(!0,!0).fadeOut(r,i),e.eq(t).fadeIn(r,i,a)})):"fadeIn"===n?t.init(function(t,n,r){e.hide().slice(o*t,o*(t+1)).fadeIn("must"===r?0:s.duration,i,a)}):(s.duration=0,t.init(function(t){e.hide().slice(o*t,o*(t+1)).show(),a()}))}function o(t,n,i){"function"==typeof n&&(i=n,n=s),this.ele=e(t),this.cfg=e.extend({},o.config,n),"function"==typeof i&&(this.callback=i),this.process=e.noop,this.valid=!0,this.predefine()}function a(t,e){for(var s="",n=t;e>n;n++)s+=',[data-clone="'+n+'"]';return s.substring(1)}e.fn.slide=function(t,s){return t=e.extend({easing:"swing",effect:"none"},t),this.each(function(e,a){var r=new o(a,t,s);r.cfg.effect.indexOf("scroll")>=0?n(r):i(r)})},o.config={trigger:"mouseenter",tagClass:"current",btnClass:"disabled",duration:400,interval:5e3},o.prototype={predefine:function(){var e,s,n,i,o=this,a=o.cfg,r=o.ele.find(a.lists||".j_slideLists"),l=r.parent(),c=r.children(),u=c.length,d=a.scrollLen;return s=Math.round(l.width()/c.outerWidth(!0)),n=Math.round(l.height()/c.outerHeight(!0)),e=s*n,d=a.scrollLen?d:e,i=Math.ceil((u-(e-d))/d),2>i||e>=u?void(o.valid=!1):("ontouchstart"in t&&(a.trigger="click"),a.cur=a.cur>=i?i-1:a.cur||0,a.scrollLen=d,o.lists=c,o.parent=r,o.pages=i,o.cansee=e,void(o.old=a.cur))},init:function(t){var s=this,n=s.cfg,i=s.ele,o=i.find(n.tags||".j_slideTags"),a=i.find(n.posCur||".j_slideCur"),r=i.find(n.posPages||".j_slidePages"),l=i.find(n.btnPrev||".j_slidePrev"),c=i.find(n.btnNext||".j_slideNext");s.valid?(o.length&&(s.tags=o,s.bindTags()),l.length?(s.btnPrev=l,s.btnNext=c,s.bindBtns()):n.btnDisable=!1,a.length&&(s.posCur=a,r.html(s.pages)),n.auto&&s.bindAuto(),s.process=t||e.noop,s.show(n.cur,"must")):o.add(a.parent()).add(l.parent()).remove()},rewriteTags:function(){var t=this,s=t.cfg,n=t.pages,i=t.tags;!s.keepTags&&function(){for(var t="",e=0,s="ul"===i[0].nodeName.toLowerCase()?"<li>":"<span>",o=s.replace("<","</");n>e;)t+=s+ ++e+o;i.html(t)}(),t.tags=i.children().removeClass(s.tagClass).each(function(t,s){e(s).data("i",t)})},bindTags:function(){var t,s,n,i=this,o=i.cfg,a=o.trigger,r="mouseenter"===a||"mouseover"===a;i.rewriteTags(),s=i.tags,r&&o.hoverDelay?(n=function(){var s=e(this);clearTimeout(t),t=setTimeout(function(){i.show(s.data("i"))},o.hoverDelay)},s.on("mouseleave",function(){clearTimeout(t)})):n=function(){i.show(e(this).data("i"))},s.on(a,n),!r&&s.has("a").on("click","a",function(t){e(this).parent().hasClass(o.tagClass)||t.preventDefault()})},bindBtns:function(){var t=this,s=t.old,n=t.cfg,i=n.btnClass,o=n.btnDisable,a=t.btnPrev,r=t.btnNext;a.on("click",function(){return(!o||!e(this).hasClass(i))&&t.prev(),!1}),r.on("click",function(){return(!o||!e(this).hasClass(i))&&t.next(),!1}),o&&(0===s?a.addClass(i):s===t.pages-1&&r.addClass(i))},bindAuto:function(){var t=this;t.ele.on({mouseenter:function(){t.pause()},mouseleave:function(){t.play()}})},prev:function(){var t=this.old-1;t=0>t?this.pages-1:t,this.show(t,"prev")},next:function(){var t=this.old+1;t=t>=this.pages?0:t,this.show(t,"next")},show:function(t,e){var n=this,i=n.old,o=n.cfg,a=o.btnClass,r=o.tagClass;i===t&&"must"!==e||n.isLocked||(o.beLock&&e!==s&&(n.isLocked=!0),o.btnDisable&&(n.btnPrev.toggleClass(a,0===t),n.btnNext.toggleClass(a,t===n.pages-1)),n.tags&&n.tags.eq(i).removeClass(r).end().eq(t).addClass(r),n.posCur&&n.posCur.html(t+1),o.lazyload&&n.loadImg(t),n.callback&&n.callback.call(n,t,i,e),n.process.call(n,t,i,e),n.old=t)},done:function(){var t=this,s=t.cfg;s.beLock&&(t.isLocked=!1),s.auto&&(t.tStartAuto=e.now(),t.auto())},lock:function(){this.isLocked=!0},unlock:function(){this.isLocked=!1,this.done()},pause:function(){this.isPaused=!0},play:function(){this.isPaused=!1,!this.isLocked&&this.auto(!0)},auto:function(t){var n=this,i=n.cfg.interval;clearTimeout(n.stopDoAuto),n.isPaused||(t&&n.tStartAuto!==s&&(i-=e.now()-n.tStartAuto),n.stopDoAuto=setTimeout(function(){!n.isPaused&&n.next()},i))},loadImg:function(t){var n=this,i=n.cfg;if(n.hasClone===s&&(n.hasClone=n.lists.first().prev().length>0,n.imgLoaded=" "),!(n.imgLoaded.indexOf(" "+t+" ")>=0)){n.imgLoaded+=t+" ";var o=i.imgAttr||"data-slide-img",r="["+o+"]",l=t*i.scrollLen,c=l+n.cansee,u=n.hasClone?n.parent.children(a(l,c)):s,d=n.lists.slice(l,c).add(u).find(r);d.each(function(t,e){var s=e.getAttribute(o);"img"===e.tagName.toLowerCase()?e.setAttribute("src",s):e.style.backgroundImage="url("+s+")",e.removeAttribute(o)}),e.trim(n.imgLoaded).split(" ").length===n.pages&&(delete n.hasClone,delete n.imgLoaded,i.lazyload=!1)}}},t.Slider=o}(window,jQuery);