【问题标题】:jQuery: fix a div at the bottom edge of the window when scrolling?jQuery:滚动时修复窗口底部边缘的div?
【发布时间】:2012-05-04 23:06:51
【问题描述】:

我的网站上有一个侧边栏,一旦达到它的高度,它应该贴在浏览器窗口的底部 - 我知道这听起来很复杂,但可能不是。

我在 jsfiddle 上做了一个小演示:http://jsfiddle.net/dJXS2/1/

$(window).scroll(function() {

    var bh = $(window).height();
    var st = $(window).scrollTop();
    var eh = $('#element').height();
    var eo = $('#element').offset();

    if ( st >= (eo.top + eh) - bh ) {
        //$('#element').css('position', 'fixed');
    }


});
​

所以,再一次 - 我想要什么: 您会看到 div page-height 只是为了测试目的而使主体更长。绿色侧边栏比页面高度短。一旦用户滚动到绿色条的底部,我希望绿色条固定在它当前所在的位置。所以我不希望用户看到绿条下面的空白。再次向上滚动时,我当然希望恢复正常的滚动行为,并且不应再修复绿条。

对此有什么想法吗?

【问题讨论】:

    标签: jquery css scroll position


    【解决方案1】:

    你可以使用位置:固定

    http://jsfiddle.net/dJXS2/5/

    $(window).scroll(function() {
    
        var bh = $(window).height();
        var st = $(window).scrollTop();
        var el = $('#element');
        var eh = el.height();
        if ( st >= (100 + eh) - bh ) {
            //fix the positon and leave the green bar in the viewport
            el.css({
                position: 'fixed',
                left: el.offset().left,
                bottom: 0
            });
        }
        else {
            // return element to normal flow
            el.removeAttr("style");
        }
    
    });
    

    【讨论】:

    • 谢谢!知道为什么我不能使用元素的偏移值吗?我需要这个,因为我的标题高度可能是动态的!
    • 你试过使用偏移量吗?它应该立即插入,这就是我离开 CSS 类的原因。 jsfiddle.net/dJXS2/5
    • 你不能使用el.offset().top,因为一旦你修复它就会不同。您需要在滚动事件之外计算并存储它。
    猜你喜欢
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多