relatively-sticky

A jQuery plugin for creating smart sticky elements
git clone https://git.ce9e.org/relatively-sticky.git

commit
ec3491e1b249af974c8c432155e3caabd554a114
parent
54aed11b8bb21219652250d2eae7f443ca522d6a
Author
leaf corcoran <leafot@gmail.com>
Date
2013-07-31 17:19
make parent_selector an option

Diffstat

M jquery.sticky-kit.coffee 10 ++++------
M jquery.sticky-kit.js 12 +++++++-----
M jquery.sticky-kit.min.js 8 ++++----

3 files changed, 15 insertions, 15 deletions


diff --git a/jquery.sticky-kit.coffee b/jquery.sticky-kit.coffee

@@ -5,12 +5,9 @@
    5     5 $ = @jQuery
    6     6 
    7     7 win = $ window
    8    -1 $.fn.stick_in_parent = (parent_selector, opts={}) ->
    9    -1   if $.isPlainObject parent_selector
   10    -1     opts = parent_selector
   11    -1     parent_selector = undefined
   12    -1 
   13    -1   { sticky_class, inner_scrolling } = opts
   -1     8 $.fn.stick_in_parent = (opts={}) ->
   -1     9   { sticky_class, inner_scrolling, parent: parent_selector } = opts
   -1    10   parent_selector ?= undefined
   14    11   inner_scrolling ?= true
   15    12   sticky_class ?= "is_stuck"
   16    13 
@@ -18,6 +15,7 @@ $.fn.stick_in_parent = (parent_selector, opts={}) ->
   18    15     ((elm, padding_bottom, parent_top, parent_height, height) ->
   19    16       parent = elm.parent()
   20    17       parent = parent.closest(parent_selector) if parent_selector?
   -1    18       throw "failed to find stick parent" unless parent.length
   21    19 
   22    20       recalc = ->
   23    21         border_top = parseInt parent.css("border-top-width"), 10

diff --git a/jquery.sticky-kit.js b/jquery.sticky-kit.js

@@ -12,16 +12,15 @@
   12    12 
   13    13   win = $(window);
   14    14 
   15    -1   $.fn.stick_in_parent = function(parent_selector, opts) {
   16    -1     var elm, inner_scrolling, sticky_class, _fn, _i, _len;
   -1    15   $.fn.stick_in_parent = function(opts) {
   -1    16     var elm, inner_scrolling, parent_selector, sticky_class, _fn, _i, _len;
   17    17     if (opts == null) {
   18    18       opts = {};
   19    19     }
   20    -1     if ($.isPlainObject(parent_selector)) {
   21    -1       opts = parent_selector;
   -1    20     sticky_class = opts.sticky_class, inner_scrolling = opts.inner_scrolling, parent_selector = opts.parent;
   -1    21     if (parent_selector == null) {
   22    22       parent_selector = void 0;
   23    23     }
   24    -1     sticky_class = opts.sticky_class, inner_scrolling = opts.inner_scrolling;
   25    24     if (inner_scrolling == null) {
   26    25       inner_scrolling = true;
   27    26     }
@@ -34,6 +33,9 @@
   34    33       if (parent_selector != null) {
   35    34         parent = parent.closest(parent_selector);
   36    35       }
   -1    36       if (!parent.length) {
   -1    37         throw "failed to find stick parent";
   -1    38       }
   37    39       recalc = function() {
   38    40         var border_top, padding_top;
   39    41         border_top = parseInt(parent.css("border-top-width"), 10);

diff --git a/jquery.sticky-kit.min.js b/jquery.sticky-kit.min.js

@@ -1,7 +1,7 @@
    1     1 /*
    2     2  WTFPL | Leaf Corcoran 2013 | http://leafo.net
    3     3 */
    4    -1 (function(){var a,t;a=this.jQuery;t=a(window);a.fn.stick_in_parent=function(f,g){var z,u,n,A,e,B;null==g&&(g={});a.isPlainObject(f)&&(g=f,f=void 0);n=g.sticky_class;u=g.inner_scrolling;null==u&&(u=!0);null==n&&(n="is_stuck");A=function(b,g,p,e,h){var m,q,k,v,c,d,w,x,r,y;d=b.parent();null!=f&&(d=d.closest(f));w=function(){var c,a;c=parseInt(d.css("border-top-width"),10);a=parseInt(d.css("padding-top"),10);g=parseInt(d.css("padding-bottom"),10);p=d.offset().top+c+a;e=d.height();return h=b.outerHeight(!0)};
    5    -1 w();if(h!==e)return k=b.css("float"),r=a("<div />").css({width:b.outerWidth(!0),height:h,display:b.css("display"),"float":k}),m=q=!1,v=void 0,c=0,x=!1,y=function(){var a,f,l,s;l=t.scrollTop();null!=v&&(f=l-v);v=l;q?(s=l+h+c>e+p,m&&!s&&(m=!1,b.css({position:"fixed",bottom:"",top:0}).trigger("sticky_kit:unbottom")),l<p&&(q=!1,c=0,"left"!==k&&"right"!==k||b.insertAfter(r),r.detach(),a={position:""},x&&(a.width=""),b.css(a).removeClass(n).trigger("sticky_kit:unstick")),u&&(a=t.height(),h>a&&!m&&(c-=f,
    6    -1 c=Math.max(a-h,c),c=Math.min(0,c),b.css({top:c+"px"})))):l>p&&(q=!0,a={position:"fixed",top:c},"none"===k&&"block"===b.css("display")&&(a.width=b.width()+"px",x=!0),b.css(a).addClass(n).after(r),"left"!==k&&"right"!==k||r.append(b),b.trigger("sticky_kit:stick"));if(q&&(null==s&&(s=l+h+c>e+p),!m&&s))return m=!0,"static"===d.css("position")&&d.css({position:"relative"}),b.css({position:"absolute",bottom:g,top:""}).trigger("sticky_kit:bottom")},t.on("scroll",y),a(document.body).on("sticky_kit:recalc",
    7    -1 function(){w();return y()})};e=0;for(B=this.length;e<B;e++)z=this[e],A(a(z));return this}}).call(this);
   -1     4 (function(){var g,t;g=this.jQuery;t=g(window);g.fn.stick_in_parent=function(e){var u,c,p,z,h,A;null==e&&(e={});p=e.sticky_class;u=e.inner_scrolling;c=e.parent;null==c&&(c=void 0);null==u&&(u=!0);null==p&&(p="is_stuck");z=function(a,e,q,h,l){var n,r,f,v,b,d,w,x,s,y;d=a.parent();null!=c&&(d=d.closest(c));if(!d.length)throw"failed to find stick parent";w=function(){var b,f;b=parseInt(d.css("border-top-width"),10);f=parseInt(d.css("padding-top"),10);e=parseInt(d.css("padding-bottom"),10);q=d.offset().top+
   -1     5 b+f;h=d.height();return l=a.outerHeight(!0)};w();if(l!==h)return f=a.css("float"),s=g("<div />").css({width:a.outerWidth(!0),height:l,display:a.css("display"),"float":f}),n=r=!1,v=void 0,b=0,x=!1,y=function(){var k,g,m,c;m=t.scrollTop();null!=v&&(g=m-v);v=m;r?(c=m+l+b>h+q,n&&!c&&(n=!1,a.css({position:"fixed",bottom:"",top:0}).trigger("sticky_kit:unbottom")),m<q&&(r=!1,b=0,"left"!==f&&"right"!==f||a.insertAfter(s),s.detach(),k={position:""},x&&(k.width=""),a.css(k).removeClass(p).trigger("sticky_kit:unstick")),
   -1     6 u&&(k=t.height(),l>k&&!n&&(b-=g,b=Math.max(k-l,b),b=Math.min(0,b),a.css({top:b+"px"})))):m>q&&(r=!0,k={position:"fixed",top:b},"none"===f&&"block"===a.css("display")&&(k.width=a.width()+"px",x=!0),a.css(k).addClass(p).after(s),"left"!==f&&"right"!==f||s.append(a),a.trigger("sticky_kit:stick"));if(r&&(null==c&&(c=m+l+b>h+q),!n&&c))return n=!0,"static"===d.css("position")&&d.css({position:"relative"}),a.css({position:"absolute",bottom:e,top:""}).trigger("sticky_kit:bottom")},t.on("scroll",y),g(document.body).on("sticky_kit:recalc",
   -1     7 function(){w();return y()})};h=0;for(A=this.length;h<A;h++)e=this[h],z(g(e));return this}}).call(this);