(function($){ $.fn.jScroll = function(settings){ var settings = $.extend(); var defaults = { id: "scrollBody" }; return this.each(function(defaults,settings){ var $this = $(this); var Bool=false; var Scrbody = $this.find(".scrollBody"); var Scro=Scrbody.find(".scrollBar"); var Scrp=Scro.find("p"); var Scrobd=Scrbody.find("#scrollMap"); var Scroul=Scrobd.find("ul"); var letter = Scrbody.prev(); var Scrp_Height = Scrp.outerHeight()/2; var Num2=Scro.outerHeight()-Scrp.outerHeight(); var offsetX=0; var offsetY=0; Scrp.mousedown(function(e){ Bool=true; }); $(document).mouseup(function(){ Bool=false; }); $(document).mousemove(function(e){ if(Bool){ var top = Scro.offset().top; var topHeight = top +Scro.outerHeight(); var value = $this.offset().top; if(e.pageY>=top && e.pageY <= topHeight){ var Num1= e.pageY - value - Scro.position().top; var y = Num1 - Scrp_Height; } if(y<=1){ Scrll(0); Scrp.css("top",1); }else if(y>=Num2){ Scrp.css("top",Num2); Scrll(Num2); }else{ Scrll(y); } } }); function Scrll(y){ Scrp.css("top",y); Scroul.css("margin-top",-(y/(Scro.outerHeight()-Scrp.outerHeight()))*(Scroul.outerHeight()-Scrobd.height())); } if(document.getElementById(settings.id).addEventListener) document.getElementById(settings.id).addEventListener('DOMMouseScroll',wheel,true); document.getElementById(settings.id).onmousewheel=wheel; var Distance=Num2*0.1; function wheel(e){ var evt = e || window.event; var wheelDelta = evt.wheelDelta || evt.detail; if(wheelDelta == -120 || wheelDelta == 3){ var Distances=Scrp.position().top+Distance; if(Distances>=Num2){ Scrp.css("top",Num2); Scrll(Num2); }else{ Scrll(Distances); } return false; }else if (wheelDelta == 120 || wheelDelta == -3){ var Distances=Scrp.position().top-Distance; if(Distances<=1){ Scrll(0); Scrp.css("top",1); }else{ Scrll(Distances); } return false; } } }); } })(jQuery);