固定的滚动顶部菜单不允许到达屏幕底部

Fixed top menu on scroll doesn't allow to reach screen's bottom

我的固定顶部菜单有一个奇怪的行为。屏幕高度是动态的(取决于数据库检索的注册表数量)。当注册表的数量创建一个滚动条,但高度不足以覆盖所有菜单时,屏幕弹跳并且不允许我到达底部(滚动条再次跳起来,不管怎样)。

我能够在这里模拟行为:http://jsfiddle.net/thiagoprzy/0kkx9tsb/

我认为这个问题取决于我创建 JS 部分的方式,但是当我搜索替代解决方案时,几乎所有的解决方案都与这个非常相似。

P.S:我的屏幕分辨率是 1650x1050,因此如果您的分辨率更小,可能需要更改 .container 高度值才能重现该问题。

您需要使用 $('.content').offset().top 而不是 $('.floating-filter').offset().top 或者您可以使用

if ($(window).scrollTop() > $('.floating-filter').outerHeight(true)) {

所以你可以使用

$(window).scroll(function () {
    if ($(window).scrollTop() > $('.content').offset().top) {
        $('.floating-filter').addClass('fixed');
    } else {
        $('.floating-filter').removeClass('fixed');
    }
});

Working Demo

所以,这就是我的解决方案:http://jsfiddle.net/thiagoprzy/0kkx9tsb/15/

基本上放弃了position: fixed,用了position: absolute。然后,我将菜单放在 position: relative 的包装器中,并在 $(document).ready() 中将包装器的高度设置为与菜单相同。最后,我根据 $(window).scroll() 事件中的 $(window).scrollTop() 位置更新菜单的 top 值。也许这不是最干净的解决方案,但它解决了我的问题,现在我很高兴。 =)