-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.scrollmenu.min.js
2 lines (2 loc) · 1.89 KB
/
jquery.scrollmenu.min.js
1
2
//! jQuery ScrollMenu v1.5.0 - Fabio Quarantini - www.fabioquarantini.com
!function(l,o,s,n){l.fn.scrollMenu=function(n){var e,t={addClassTo:l(this),scrollUpClass:"is-visible",scrollDownClass:"is-hidden",scrollTopClass:"is-top",scrollBottomClass:"is-bottom",scrollOffsetInClass:"is-offset-in",scrollOffsetOutClass:"is-offset-out",timeOut:1e3/60,tolleranceUp:0,tolleranceDown:0,scrollOffset:l(this).outerHeight(),onScrollMenuUp:function(){},onScrollMenuDown:function(){},onScrollMenuTop:function(){},onScrollMenuBottom:function(){},onScrollMenuOffsetIn:function(){},onScrollMenuOffsetOut:function(){}},a=0,r=(t.navigationHeight,t.tolleranceUp),c=t.tolleranceDown;l.extend(t,n),o.animationFrame=function(l){return o.requestAnimationFrame||function(l){o.setTimeout(l,t.timeOut)}}(),l(o).scroll(function(){e?(clearTimeout(e),e=!1):(e=!0,animationFrame(f))});var f=function(){var n=l(o).scrollTop(),f=l(o).height(),i=l(s).height();n>a&&n>=t.scrollOffset?Math.abs(a-n)>=c&&(l(t.addClassTo).removeClass(t.scrollUpClass).addClass(t.scrollDownClass),l(s).trigger("onScrollMenuDown"),t.onScrollMenuDown.call()):Math.abs(a-n)>=r&&(l(t.addClassTo).removeClass(t.scrollDownClass).addClass(t.scrollUpClass),l(s).trigger("onScrollMenuUp"),t.onScrollMenuUp.call()),0==n?(l(t.addClassTo).addClass(t.scrollTopClass),l(s).trigger("onScrollMenuTop"),t.onScrollMenuTop.call()):l(t.addClassTo).removeClass(t.scrollTopClass),n==i-f?(l(t.addClassTo).addClass(t.scrollBottomClass),l(s).trigger("onScrollMenuBottom"),t.onScrollMenuBottom.call()):l(t.addClassTo).removeClass(t.scrollBottomClass),n<=t.scrollOffset?(l(t.addClassTo).removeClass(t.scrollOffsetOutClass).addClass(t.scrollOffsetInClass),l(s).trigger("onScrollMenuOffsetIn"),t.onScrollMenuOffsetIn.call()):(l(t.addClassTo).removeClass(t.scrollOffsetInClass).addClass(t.scrollOffsetOutClass),l(s).trigger("onScrollMenuOffsetOut"),t.onScrollMenuOffsetOut.call()),e=!1,a=n};f()}}(jQuery,window,document);