/* * Easy Slider 1.5 - jQuery plugin * written by Alen Grakalic * http://cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding * * Copyright (c) 2009 Alen Grakalic (http://cssglobe.com) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * Built for jQuery library * http://jquery.com * */ /* * markup example for $("#slider").easySlider(); * *
* *
* */ (function($) { $.fn.easySlider = function(options){ // default configuration properties var defaults = { prevId: 'prevBtn', prevText: 'Previous', nextId: 'nextBtn', nextText: 'Next', controlsShow: true, controlsBefore: '', controlsAfter: '', controlsFade: true, firstId: 'firstBtn', firstText: 'First', firstShow: false, lastId: 'lastBtn', lastText: 'Last', lastShow: false, vertical: false, speed: 800, auto: false, pause: 2000, continuous: false }; var options = $.extend(defaults, options); this.each(function() { var obj = $(this); var s = ( $("li", obj).length + 1 ); var w = $("li", obj).width(); var h = $("li", obj).height(); obj.width(w); obj.height(h); //alert($("li", obj)[0].innerHTML); /** 给当前动态移动的banner加一个循环 **/ $("ul",obj).append('
  • '+$("li", obj)[0].innerHTML+'
  • '); //获取元素绝对高度 var offset = obj.offset(); //alert("left: " + offset.left + ", top: " + offset.top ); obj.css("overflow","hidden"); var ts = s-1; var t = 0; $("ul", obj).css('width',s*w); if(!options.vertical) $("li", obj).css('float','left'); if(options.controlsShow){ var html = options.controlsBefore; if(options.firstShow) { html += ''+ options.firstText +''; } html += ' '+ options.prevText +''; html += ' '+ options.nextText +''; if(options.lastShow) { html += ' '+ options.lastText +''; } html += options.controlsAfter; $(obj).after(html); }; $("a","#"+options.nextId).click(function(){ animate("next",true); }); $("a","#"+options.prevId).click(function(){ animate("prev",true); }); $("a","#"+options.firstId).click(function(){ animate("first",true); }); $("a","#"+options.lastId).click(function(){ animate("last",true); }); function animate(dir,clicked){ var ot = t; switch(dir){ case "next": t = (ot>=ts) ? (options.continuous ? 0 : ts) : t+1; break; case "prev": t = (t<=0) ? (options.continuous ? ts : 0) : t-1; break; case "first": t = 0; break; case "last": t = ts; break; default: break; }; var diff = Math.abs(ot-t); var speed = diff*options.speed; if(!options.vertical) { //水平动 p = (t*w*-1); //alert(p); //alert( p ); if( p == ((s-1)*w*-1) && dir == "prev" ) { //alert( p ); $("ul",obj).css('marginLeft',p); if(clicked) clearTimeout(timeout); //if(options.auto && dir=="next" && !clicked){ ///** //timeout = setTimeout(function(){ animate("prev",false); //},0); //***/ //}; return; }else if( p == 0 && dir == "next" ) { $("ul",obj).css('marginLeft',0); if(clicked) clearTimeout(timeout); //if(options.auto && dir=="next" && !clicked){ ///** // timeout = setTimeout(function(){ animate("next",false); // },0); //***/ //}; return; }else{ $("ul",obj).animate( { marginLeft: p }, speed ); } } else { p = (t*h*-1); $("ul",obj).animate( { marginTop: p }, speed ); }; if(!options.continuous && options.controlsFade){ if(t==ts){ $("a","#"+options.nextId).hide(); $("a","#"+options.lastId).hide(); } else { $("a","#"+options.nextId).show(); $("a","#"+options.lastId).show(); }; if(t==0){ $("a","#"+options.prevId).hide(); $("a","#"+options.firstId).hide(); } else { $("a","#"+options.prevId).show(); $("a","#"+options.firstId).show(); }; }; if(clicked) clearTimeout(timeout); if(options.auto && dir=="next" && !clicked){ ///** timeout = setTimeout(function(){ animate("next",false); },diff*options.speed+options.pause); //***/ }; }; // init var timeout; if(options.auto){; timeout = setTimeout(function(){ animate("next",false); },options.pause); }; if(!options.continuous && options.controlsFade){ $("a","#"+options.prevId).hide(); $("a","#"+options.firstId).hide(); }; }); }; })(jQuery);