-
Notifications
You must be signed in to change notification settings - Fork 2
/
jquery.xrhyme.1.0.1.min.js
7 lines (7 loc) · 2.66 KB
/
jquery.xrhyme.1.0.1.min.js
1
2
3
4
5
6
7
/* jQuery X-Rhyme v 1.0.1
* Nice work for horizontal websites :>
* Copyright (c) 2011 ~ 2013, lancee LY
* http://xrhy.me/
* Dual licensed under the MIT or GPL Version 3 licenses.
*/
!function(a){"use strict",a.xrhyme=function(b,c){var d=this,e={};d.$x_cont=a(b).addClass("x_container"),d.$x_cont.data("X-Rhyme",d),d.$x_wrap=d.$x_cont.parent().addClass("x_wrapper"),e.init=function(){d.options=a.extend({},a.xrhyme.defaults,c),d.width=0,d.offset={},d.$x_cont.children().each(function(b){a(this).addClass("x_item");if(d.options.anchorMode){var c=a(this).attr("id");c&&(d.offset[c]=d.width)}else d.offset[b]=d.width;d.width+=a(this).outerWidth(!0)}),d.$x_cont.width(d.width),e.resetContent(),d.endsFlag=0,d.options.navigationSelector&&a(d.options.navigationSelector).each(function(b){var c=d.options.anchorMode?a(this).attr("href").replace("#",""):b;a(this).on("click",function(f){d.$x_wrap.stop().animate({scrollLeft:d.offset[c]},{queue:!1,duration:d.options.animationTime,easing:d.options.easing,complete:function(){d.endsFlag=e.endsFlag(),a.isFunction(d.options.animeComplete)&&d.options.animeComplete.call(d,c,b)}}),f.preventDefault?f.preventDefault():f.returnValue=!1})}),window.onresize=e.resetContent,document.onkeydown=e.keyScroll,a.browser.mozilla?document.addEventListener("DOMMouseScroll",e.mouseWheel,!1):document.onmousewheel=e.mouseWheel},e.endsFlag=function(){return d.$x_wrap.scrollLeft()?d.$x_cont.outerWidth(!0)/(d.$x_wrap.scrollLeft()+a(window).width()):d.$x_wrap.scrollLeft()},e.frontier=function(){var b=2;return function(c){d.endsFlag=e.endsFlag();if(a.isFunction(d.options.animeComplete)){if(b>1){var f=d.$x_wrap.scrollLeft()-c/2,g=d.$x_wrap.scrollLeft()+c/2;for(i in d.offset)if((d.offset[i]-f)*(d.offset[i]-g)<0){d.options.animeComplete.call(d,i,c);break}}b=d.endsFlag}}}(),e.resetContent=function(){d.perWidth=d.$x_wrap.width()/10;var b=a(window).width()-a(".x_item:last").outerWidth(!0);b>0&&d.$x_cont.width(d.width+b)},e.mouseWheel=function(a){a=a||window.event;var b=a.detail?a.detail*40:a.wheelDelta*-1;b*=d.options.wheelSpeed;var c=b+d.$x_wrap.scrollLeft();return d.$x_wrap.scrollLeft(c),e.frontier(b),!1},e.keyScroll=function(a){a=a||window.event;switch(a.keyCode){case 37:d.$x_wrap.scrollLeft(d.$x_wrap.scrollLeft()-d.perWidth),e.frontier(-d.perWidth);break;case 39:d.$x_wrap.scrollLeft(d.$x_wrap.scrollLeft()+d.perWidth),e.frontier(+d.perWidth);break;default:return}},e.init()},a.xrhyme.defaults={navigationSelector:"",anchorMode:!1,wheelSpeed:.5,easing:"swing",animationTime:600,animeComplete:""},a.fn.xrhyme=function(b,c){var d=a(this).data("X-Rhyme");return this.each(function(e){(typeof b).match("object|undefined")&&(d?c&&c.call(d):(d=new a.xrhyme(this,b),c&&c.call(d)))})}}(jQuery);