javascript - 滚动时固定但停在页脚

标签 javascript jquery html css

更新 我一直在测试粘性位置,但它在 Safari 11.1 版上不起作用。 Safari 是分析能力最强的浏览器。所以我想我仍在寻找 jQuery 解决方案。尽管 Michał Sadowski 的回答有助于分配。


我试图在滚动时获得一个 fixed 元素,但它需要停止固定并在到达页脚时开始滚动。

我正在使用此代码:Make scrolling sidebar stop at footer

我的CSS、HTML和this中的一模一样马上 fiddle 。

但问题是,我的 fixed 元素需要有一个 offset of +60 因为我的标题(菜单)的高度是 55px .我有工作的偏移量。 现在,我使用以下代码。

function sticky_relocate() {
    var window_top = $(window).scrollTop()+60;
    var footer_top = $("#footer").offset().top;
    var div_top = $('#sticky-anchor').offset().top;
    var div_height = $("#sticky").height();

    var padding = 20;  // tweak here or get from margins etc

    if (window_top + div_height > footer_top - padding)
        $('#sticky').css({top: (window_top + div_height - footer_top + padding) * -1})
    else if (window_top > div_top) {
        $('#sticky').addClass('stick');
        $('#sticky').css({top: 60})
    } else {
        $('#sticky').removeClass('stick');
    }
}

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

这类作品。但是当我到达 #footer 时,top60px 跳到 -1.8414。所以过渡不是无缝的。当我到达页脚时,它会“跳跃”。

我已经尝试了很多东西。

  • 比如将 60px 添加到 #sticky div。
  • 当它删除类 stick 时,我在后面添加了 $('#sticky').css({top: 60})

但是没有什么能消除“跳跃”,有没有人可以帮助我让它工作或有类似的代码片段?提前致谢!

最佳答案

好的,这在很大程度上取决于您的 html 结构。但是假设你是这样的:

<div class="container">
  <div class="content">
    <div class="sticky">
    </div>
  </div>
  <div class="footer">
  </div>
</div>

现在,在 css 中:

.content{
  position: relative
}
.sticky{
  position: sticky;
  top: 60px;
}

它应该完全满足您的需求。

关于javascript - 滚动时固定但停在页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49938776/

相关文章:

javascript - 如何使用 Node/Electron 桌面应用程序从 API 中提取新数据?

javascript - 在 javascript 中创建 pageObject 模式( Protractor 工具)

jquery - jQuery Mobile 中的弹出窗口未按预期工作,请提出建议

html - 如何使文本溢出对 HTML 中的输入元素可见?

javascript - 寻找兼容跨移动浏览器的方式来从内置麦克风进行录音吗?

jquery - 单击列表项后如何关闭侧边菜单?

javascript - AJAX 就绪状态中断,AJAX 处理数据的速度不够快?

javascript - 为什么将 JavaScript 类嵌入到匿名 function() 调用中?

javascript - 当留下特定像素时,将位置从固定更改为绝对

jquery - 如何使用 jQuery UI 插件使 html 文本框可拖动和调整大小?