-
Notifications
You must be signed in to change notification settings - Fork 1
/
jquery.isvisible.min.js
2 lines (2 loc) · 2.97 KB
/
jquery.isvisible.min.js
1
2
//! jQuery isVisible v1.0.0 - Fabio Quarantini - www.fabioquarantini.com
!function(s,a,t,i){s.fn.isVisible=function(t){var i,e,l,o={showClass:!0,removeClass:!0,offset:0,offsetTop:0,offsetBottom:0,offsetLeft:0,offsetRight:0,classXY:"is-visible",classX:"is-visible-x",classY:"is-visible-y",classTop:"is-visible-top",classBottom:"is-visible-bottom",classLeft:"is-visible-left",classRight:"is-visible-right",dataName:"is-visible-offset",dataNameTop:"is-visible-offset-top",dataNameBottom:"is-visible-offset-bottom",dataNameLeft:"is-visible-offset-left",dataNameRight:"is-visible-offset-right"},h=this.selector,r=s(a),f=0,c=0,C=!0;s.extend(o,t),a.animationFrame=function(s){return a.requestAnimationFrame||function(s){a.setTimeout(s,1e3/60)}}(),r.scroll(function(){i?(clearTimeout(i),i=!1):(i=!0,animationFrame(m))});var m=function(){var a=r.height(),t=r.width(),i=r.scrollTop(),m=i+a,d=r.scrollLeft(),v=d+t;C||(l=i>f?"down":"up",e=c>d?"left":"right"),C=!1,f=i,c=d,s(h).each(function(){var a=s(this),t=a.height(),h=a.width(),r=a.offset(),f=r.top,c=r.left,C=c+h,n=f+t,g=a.data(o.dataNameTop)||a.data(o.dataName)||o.offsetTop||o.offset||0;g=parseInt(g);var b=m>=f-g&&f-g>=i;b?(a.trigger("isVisible",["top",l,e]),o.showClass&&!s(this).hasClass(o.classTop)&&s(this).addClass(o.classTop)):o.showClass&&o.removeClass&&s(this).hasClass(o.classTop)&&s(this).removeClass(o.classTop);var w=a.data(o.dataNameBottom)||a.data(o.dataName)||o.offsetBottom||o.offset||0;w=parseInt(w);var p=m>=n+w&&n+w>=i;p?(a.trigger("isVisible",["bottom",l,e]),o.showClass&&!s(this).hasClass(o.classBottom)&&s(this).addClass(o.classBottom)):o.showClass&&o.removeClass&&s(this).hasClass(o.classBottom)&&s(this).removeClass(o.classBottom);var u=a.data(o.dataNameLeft)||a.data(o.dataName)||o.offsetLeft||o.offset||0;u=parseInt(u);var N=c-u>=d&&v>=c-u;N?(a.trigger("isVisible",["left",l,e]),o.showClass&&!s(this).hasClass(o.classLeft)&&s(this).addClass(o.classLeft)):o.showClass&&o.removeClass&&s(this).hasClass(o.classLeft)&&s(this).removeClass(o.classLeft);var T=a.data(o.dataNameRight)||a.data(o.dataName)||o.offsetRight||o.offset||0;T=parseInt(T);var L=v>=C+T&&C+T>=d;L?(a.trigger("isVisible",["right",l,e]),o.showClass&&!s(this).hasClass(o.classRight)&&s(this).addClass(o.classRight)):o.showClass&&o.removeClass&&s(this).hasClass(o.classRight)&&s(this).removeClass(o.classRight);var X=N&&L;X?(a.trigger("isVisible",["x",l,e]),o.showClass&&!s(this).hasClass(o.classX)&&s(this).addClass(o.classX)):o.showClass&&o.removeClass&&s(this).hasClass(o.classX)&&s(this).removeClass(o.classX);var Y=b&&p;Y?(a.trigger("isVisible",["y",l,e]),o.showClass&&!s(this).hasClass(o.classY)&&s(this).addClass(o.classY)):o.showClass&&o.removeClass&&s(this).hasClass(o.classY)&&s(this).removeClass(o.classY);var B=b&&p&&N&&L;B?(a.trigger("isVisible",["xy",l,e]),o.showClass&&!s(this).hasClass(o.classXY)&&s(this).addClass(o.classXY)):o.showClass&&o.removeClass&&s(this).hasClass(o.classXY)&&s(this).removeClass(o.classXY)})};r.load(function(){m()}),r.resize(function(){m()})}}(jQuery,window,document);