(function($){ $.extend(jquery.easing,{ easeoutquint: function (x, t, b, c, d) { return c*((t=t/d-1)*t*t*t*t + 1) + b; } }); $.fn.hscrollpane=function(settings){ settings=$.extend(true,{},$.fn.hscrollpane.defaults,settings); this.each(function(){ var container=$(this), mover=container.find(settings.mover), w=843, c=settings.moverw || mover.width(), dragbar=(container.find(".hscrollpane_dragbar").length==0 && c>w ) ? container.append('
').find(".hscrollpane_dragbar") : container.find(".hscrollpane_dragbar"), handle=dragbar.find(".hscrollpane_draghandle"); if(settings.showarrow){ container.append(''); leftarrow=container.find(".hscrollpane_leftarrow"); rightarrow=container.find(".hscrollpane_rightarrow"); //dragbar.css({ //width:container.width()-leftarrow.outerwidth()*2, //left:leftarrow.outerwidth() //}); leftarrow.unbind(); rightarrow.unbind(); }else{ dragbar.css("width",container.width()); } mover.stop().css("left","0px"); container.unbind();//避免多次初始化时的事件重复绑定; handle.unbind(); dragbar.unbind(); //handle.stop().css({ //width:(w/c)*w >settings.handleminwidth ? (w/c)*w : settings.handleminwidth, //left:0 //}); var maxlen=parseint(dragbar.width())-parseint(handle.outerwidth()); handle.bind("mousedown",function(e){ var x=e.pagex; var hx=parseint(handle.css("left")); if(settings.handlecssalter){$(this).addclass(settings.handlecssalter);} $(document).bind("mousemove",function(e){ var left=e.pagex-x+hx<0?0:(e.pagex-x+hx>=maxlen?maxlen:e.pagex-x+hx); handle.stop().css({left:left}); if(settings.easing){ mover.stop().animate({ left:-left/maxlen*(c-w) },{duration:1500,easing:'easeoutquint',queue:false}); }else{ mover.css({left:-left/maxlen*(c-w)}); } return false; }); $(document).bind("mouseup",function(){ if(settings.handlecssalter){handle.removeclass(settings.handlecssalter);} $(this).unbind("mousemove"); }) return false; }).click(function(){ return false; }) if(settings.dragable){ mover.bind("mousedown",function(e){ var x=e.pagex; $(this).bind("mousemove",function(e){ $.fn.hscrollpane.move(settings,mover,handle,w,c,maxlen,x,e.pagex); return false; }) $(document).bind("mouseup",function(){ mover.unbind("mousemove"); }) }) } if(settings.showarrow){ leftarrow.click(function(){ $.fn.hscrollpane.move(settings,mover,handle,w,c,maxlen,1); return false; }).focus(function(){this.blur();}); rightarrow.click(function(){ $.fn.hscrollpane.move(settings,mover,handle,w,c,maxlen,-1); return false; }).focus(function(){this.blur();}); } this.ondragstart=function(){return false;} this.onselectstart=function(){return false;} }) } $.fn.hscrollpane.defaults = { showarrow:false, handleminwidth:0, dragable:true, easing:true, mousewheel:{bind:true,movelength:172} }; $.fn.hscrollpane.move=function(settings,mover,handle,w,c,maxlen,x,nx){ if(arguments.length==7){ var left=parseint(mover.css("left"))+x*settings.mousewheel.movelength; }else{ var left=parseint(mover.css("left"))+((nx-x)/w)*(c-w); } left=left.tofixed(0); left=left>0?0:left