- commit
- 3ef391e196964365e93133af7bcc5c488922fc70
- parent
- 809cae990e8d462db4c0a0ddb0a8c12b2d57160a
- Author
- leaf corcoran <leafot@gmail.com>
- Date
- 2013-07-31 16:12
sticky_kit:recalc calls tick
Diffstat
| M | jquery.sticky-kit.coffee | 11 | ++++++++--- |
| M | jquery.sticky-kit.js | 12 | ++++++++---- |
| M | jquery.sticky-kit.min.js | 8 | ++++---- |
3 files changed, 20 insertions, 11 deletions
diff --git a/jquery.sticky-kit.coffee b/jquery.sticky-kit.coffee
@@ -22,7 +22,7 @@ $.fn.stick_in_parent = (parent_selector, opts={}) ->
22 22 recalc = ->
23 23 border_top = parseInt parent.css("border-top-width"), 10
24 24 padding_top = parseInt parent.css("padding-top"), 10
25 -1 padding_bottom = parseInt parent.css("padding-bottom")
-1 25 padding_bottom = parseInt parent.css("padding-bottom"), 10
26 26
27 27 parent_top = parent.offset().top + border_top + padding_top
28 28 parent_height = parent.height()
@@ -31,7 +31,6 @@ $.fn.stick_in_parent = (parent_selector, opts={}) ->
31 31
32 32 recalc()
33 33 return if height == parent_height
34 -1 parent.on "sticky_kit:recalc", recalc
35 34
36 35 # create a spacer
37 36 float = elm.css "float"
@@ -49,7 +48,7 @@ $.fn.stick_in_parent = (parent_selector, opts={}) ->
49 48 offset = 0
50 49 reset_width = false
51 50
52 -1 win.on "scroll", (e) ->
-1 51 tick = ->
53 52 scroll = win.scrollTop()
54 53 if last_pos?
55 54 delta = scroll - last_pos
@@ -135,6 +134,12 @@ $.fn.stick_in_parent = (parent_selector, opts={}) ->
135 134 bottom: padding_bottom
136 135 top: ""
137 136 }).trigger("sticky_kit:bottom")
-1 137
-1 138 win.on "scroll", tick
-1 139 $(document.body).on "sticky_kit:recalc", ->
-1 140 recalc()
-1 141 tick()
-1 142
138 143 ) $ elm
139 144 @
140 145
diff --git a/jquery.sticky-kit.js b/jquery.sticky-kit.js
@@ -29,7 +29,7 @@ 29 29 sticky_class = "is_stuck"; 30 30 } 31 31 _fn = function(elm, padding_bottom, parent_top, parent_height, height) {32 -1 var bottomed, fixed, float, last_pos, offset, parent, recalc, reset_width, spacer;-1 32 var bottomed, fixed, float, last_pos, offset, parent, recalc, reset_width, spacer, tick; 33 33 parent = elm.parent(); 34 34 if (parent_selector != null) { 35 35 parent = parent.closest(parent_selector); @@ -38,7 +38,7 @@ 38 38 var border_top, padding_top; 39 39 border_top = parseInt(parent.css("border-top-width"), 10); 40 40 padding_top = parseInt(parent.css("padding-top"), 10);41 -1 padding_bottom = parseInt(parent.css("padding-bottom"));-1 41 padding_bottom = parseInt(parent.css("padding-bottom"), 10); 42 42 parent_top = parent.offset().top + border_top + padding_top; 43 43 parent_height = parent.height(); 44 44 return height = elm.outerHeight(true); @@ -47,7 +47,6 @@ 47 47 if (height === parent_height) { 48 48 return; 49 49 }50 -1 parent.on("sticky_kit:recalc", recalc);51 50 float = elm.css("float"); 52 51 spacer = $("<div />").css({ 53 52 width: elm.outerWidth(true), @@ -60,7 +59,7 @@ 60 59 last_pos = void 0; 61 60 offset = 0; 62 61 reset_width = false;63 -1 return win.on("scroll", function(e) {-1 62 tick = function() { 64 63 var before, css, delta, scroll, will_bottom, win_height; 65 64 scroll = win.scrollTop(); 66 65 if (last_pos != null) { @@ -142,6 +141,11 @@ 142 141 }).trigger("sticky_kit:bottom"); 143 142 } 144 143 } -1 144 }; -1 145 win.on("scroll", tick); -1 146 return $(document.body).on("sticky_kit:recalc", function() { -1 147 recalc(); -1 148 return tick(); 145 149 }); 146 150 }; 147 151 for (_i = 0, _len = this.length; _i < _len; _i++) {
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 f,t;f=this.jQuery;t=f(window);f.fn.stick_in_parent=function(d,h){var y,u,p,z,g,A;null==h&&(h={});f.isPlainObject(d)&&(h=d,d=void 0);p=h.sticky_class;u=h.inner_scrolling;null==u&&(u=!0);null==p&&(p="is_stuck");z=function(a,h,q,g,k){var n,r,l,v,b,e,w,x,s;e=a.parent();null!=d&&(e=e.closest(d));w=function(){var b,c;b=parseInt(e.css("border-top-width"),10);c=parseInt(e.css("padding-top"),10);h=parseInt(e.css("padding-bottom"));q=e.offset().top+b+c;g=e.height();return k=a.outerHeight(!0)};5 -1 w();if(k!==g)return e.on("sticky_kit:recalc",w),l=a.css("float"),s=f("<div />").css({width:a.outerWidth(!0),height:k,display:a.css("display"),"float":l}),n=r=!1,v=void 0,b=0,x=!1,t.on("scroll",function(m){var c,f,d;m=t.scrollTop();null!=v&&(f=m-v);v=m;r?(d=m+k+b>g+q,n&&!d&&(n=!1,a.css({position:"fixed",bottom:"",top:0}).trigger("sticky_kit:unbottom")),m<q&&(r=!1,b=0,"left"!==l&&"right"!==l||a.insertAfter(s),s.detach(),c={position:""},x&&(c.width=""),a.css(c).removeClass(p).trigger("sticky_kit:unstick")),6 -1 u&&(c=t.height(),k>c&&!n&&(b-=f,b=Math.max(c-k,b),b=Math.min(0,b),a.css({top:b+"px"})))):m>q&&(r=!0,c={position:"fixed",top:b},"none"===l&&"block"===a.css("display")&&(c.width=a.width()+"px",x=!0),a.css(c).addClass(p).after(s),"left"!==l&&"right"!==l||s.append(a),a.trigger("sticky_kit:stick"));if(r&&(null==d&&(d=m+k+b>g+q),!n&&d))return n=!0,"static"===e.css("position")&&e.css({position:"relative"}),a.css({position:"absolute",bottom:h,top:""}).trigger("sticky_kit:bottom")})};g=0;for(A=this.length;g<7 -1 A;g++)y=this[g],z(f(y));return this}}).call(this);-1 4 (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)}; -1 5 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, -1 6 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", -1 7 function(){w();return y()})};e=0;for(B=this.length;e<B;e++)z=this[e],A(a(z));return this}}).call(this);