forked from leafo/sticky-kit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.sticky-kit.min.js
9 lines (9 loc) · 2.78 KB
/
jquery.sticky-kit.min.js
1
2
3
4
5
6
7
8
9
/*
Sticky-kit v1.1.2 | WTFPL | Leaf Corcoran 2015 | http://leafo.net
*/
(function(){var h=this.jQuery||window.jQuery;var k=h(window);h.fn.stick_in_parent=function(b){var w;null==b&&(b={});var t=b.sticky_class;var C=b.inner_scrolling;var I=b.recalc_every;var x=b.parent;var n=b.offset_top;var p=b.spacer;var y=b.bottoming;null==n&&(n=0);null==x&&(x=void 0);null==C&&(C=!0);null==t&&(t="is_stuck");var D=h(document);null==y&&(y=!0);var K=function(a,b,r,E,F,u,m,G){var l,d;if(!a.data("sticky_kit")){a.data("sticky_kit",!0);var w=D.height();var f=a.parent();null!=x&&(f=f.closest(x));
if(!f.length)throw"failed to find stick parent";var v=l=!1;(d=null!=p?p&&a.closest(p):h("<div />"))&&d.css("position",a.css("position"));var z=function(){if(!G){w=D.height();var c=parseInt(f.css("border-top-width"),10);var g=parseInt(f.css("padding-top"),10);b=parseInt(f.css("padding-bottom"),10);r=f.offset().top+c+g;E=f.height();if(l){v=l=!1;null==p&&(a.insertAfter(d),d.detach());a.css({position:"",top:"",width:"",bottom:""}).removeClass(t);var k=!0}F=a.offset().top-(parseInt(a.css("margin-top"),
10)||0)-n;u=a.outerHeight(!0);m=a.css("float");d&&d.css({width:a.outerWidth(!0),height:u,display:a.css("display"),"vertical-align":a.css("vertical-align"),"float":m});if(k)return e()}};z();var H=void 0;var c=n;var A=I;var e=function(){var h;if(!G){var g=!1;null!=A&&(--A,0>=A&&(A=I,z(),g=!0));g||D.height()===w||z();g=k.scrollTop();null!=H&&(h=g-H);H=g;if(l){if(y){var e=g+u+c>E+r;v&&!e&&(v=!1,a.css({position:"fixed",bottom:"",top:c}).trigger("sticky_kit:unbottom"))}if(g<F){l=!1;c=n;null==p&&("left"!==
m&&"right"!==m||a.insertAfter(d),d.detach());var q={position:"",width:"",top:""};a.css(q).removeClass(t).trigger("sticky_kit:unstick")}C&&(q=k.height(),u+n>q&&!v&&(c-=h,c=Math.max(q-u,c),c=Math.min(n,c),l&&a.css({top:c+"px"})))}else g>F&&(l=!0,q={position:"fixed",top:c},q.width="border-box"===a.css("box-sizing")?a.outerWidth()+"px":a.width()+"px",a.css(q).addClass(t),null==p&&(a.after(d),"left"!==m&&"right"!==m||d.append(a)),a.trigger("sticky_kit:stick"));if(l&&y&&(null==e&&(e=g+u+c>E+r),!v&&e))return v=
!0,"static"===f.css("position")&&f.css({position:"relative"}),a.css({position:"absolute",bottom:b,top:"auto"}).trigger("sticky_kit:bottom")}};var B=function(){z();return e()};var J=function(){G=!0;k.off("touchmove",e);k.off("scroll",e);k.off("resize",B);h(document.body).off("sticky_kit:recalc",B);a.off("sticky_kit:detach",J);a.removeData("sticky_kit");a.css({position:"",bottom:"",top:"",width:""});f.position("position","");if(l)return null==p&&("left"!==m&&"right"!==m||a.insertAfter(d),d.remove()),
a.removeClass(t)};k.on("touchmove",e);k.on("scroll",e);k.on("resize",B);h(document.body).on("sticky_kit:recalc",B);a.on("sticky_kit:detach",J);return setTimeout(e,0)}};var r=0;for(w=this.length;r<w;r++)b=this[r],K(h(b));return this}}).call(this);