Sticky Div在@ bottom停止

时间:2011-08-25 16:36:17

标签: javascript jquery html sticky

我有一个粘性div但我需要它停在某一点向底部。当然在示例中(链接如下)它永远不会触及底部,但如果我有一个宽度更大的div,我希望它在它击中我的页脚之前停止。如果您不理解这个问题,请告诉我,帮助会很棒。

http://blog.yjl.im/2010/01/stick-div-at-top-after-scrolling.html

3 个答案:

答案 0 :(得分:3)

这是一个jquery插件,可以为您解决此问题。此插件会将元素固定到页面顶部,就像您在示例中所做的那样;并且,如果将可选限制设置为要停止的元素的顶部,则应在滚动页面时向上移动。您必须将“固定”元素的高度添加到限制中,以使其在触及您不希望触摸的元素之前再次向上移动页面,如果需要,还可以添加一些边距。

这是一个演示这一点的小提琴:http://jsfiddle.net/ZczEt/2/

以下是插件及其来源:https://github.com/bigspotteddog/ScrollToFixed

// the limit is optional, but it will make the header move up the
// page again once it reaches the 7th paragraph
$(document).ready(function() {
    $('.header').scrollToFixed( { limit: $($('h2')[7]).offset().top } );
});

我忘了提一下,这个插件还可以修复粘贴标题下方内容中的故障。在您的示例中,如果您缓慢滚动,您会注意到内容在固定时跳过标题的高度。这个插件补偿了这一点。

答案 1 :(得分:0)

这与示例有点不同,但我认为这会影响您的目标:

function sticky_relocate() {
    var window_top = $(window).scrollTop();
    var div_bottomEdge = window_top + $('#sticky').outerHeight();
    var avoid_top = $('#avoidMe').offset().top;
    if (div_bottomEdge < avoid_top) $('#sticky').css('top', window_top);
}

$(document).ready(function() {
    $(window).scroll(sticky_relocate);
    sticky_relocate();
});

See this jsFiddle Example for more details

答案 2 :(得分:0)

我使用过jquery插件

 https://github.com/garand/sticky

停在底部:

 (function($) {

    var limit_bottom=$('#footer').height(); 
    $('.product-box').sticky({topSpacing:0, bottomSpacing:limit_bottom});
   })(jQuery);