-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathscrollOCD.min.js
1 lines (1 loc) · 1.59 KB
/
scrollOCD.min.js
1
function scrollOCD(a){"use strict";function d(a,b){clearInterval(k);var c=window.pageYOffset,d=a,f=d-c,g=Math.round(f/20*b);k=setInterval(function(){e(g,d)},10)}function e(a,b){var c=window.pageYOffset;window.scrollTo(0,c+a),(a>0&&c+a>=b||a<0&&c+a<=b)&&(window.scrollTo(0,b),clearInterval(k))}function f(b){if("undefined"==typeof b[0])return!1;b=b.split(",");for(var c=null,d=!1,e=b.length-1;e>=0;e-=1){c="."===b[e].substring(0,1)?document.getElementsByClassName(b[e].substring(1))[0]:"#"===b[e].substring(0,1)?document.getElementById(b[e].substring(1)):document.getElementsByTagName(b[e])[0];var f=c.offsetTop,g=f+c.offsetHeight,h=window.pageYOffset,i=h+window.innerHeight,j=f+c.offsetHeight-h,k=i-f,l=a.diff+101;if(d=f>=h&&g<=i,d||(d=k<=l&&k>0),d||(d=j<=l&&j>0),d)return!0}return!!d&&void 0}function g(a){window.clearTimeout(j),j=window.setTimeout(function(){if(!f(a.exclude))for(var b=document.getElementsByClassName(a.classname),c=window.pageYOffset,e=b.length-1;e>=0;e-=1){var g=b[e].offsetTop;Math.abs(c-g)<=a.diff&&d(g,a.speed)}},a.timeout)}a="undefined"!=typeof a?a:{};var b={classname:"ocd",diff:200,speed:1,timeout:1500,minWidth:1280,exclude:""};for(var c in b)"undefined"==typeof a[c]&&(a[c]=b[c]);String(a.diff).indexOf("%")>-1&&(a.diff=window.innerHeight*parseInt(a.diff,10)/100);var h="mousewheel",i=navigator.userAgent.indexOf("Firefox")!==-1;i&&(h="DOMMouseScroll"),"ontouchstart"in window&&(h="touchmove");var j=null,k=null;(!a.minWidth||window.innerWidth>=a.minWidth)&&(document.addEventListener(h,function(){g(a)},!1),document.addEventListener("keydown",function(b){38!==b.keyCode&&40!==b.keyCode||g(a)},!1))}