ScrollTop 适用于 Chrome 和 Edge,但不适用于 Firefox

Posted

技术标签:

【中文标题】ScrollTop 适用于 Chrome 和 Edge,但不适用于 Firefox【英文标题】:ScrollTop works in Chrome and Edge but not Firefox 【发布时间】:2016-08-03 12:22:32 【问题描述】:

所以我有一个 javascript 函数,当单击导航栏的那部分时,它会滚动到所需的元素。它在 Chrome 和 Edge 中运行良好,但在 Firefox 或 IE 中运行良好。 功能:

$('html', 'body').animate(
  scrollTop:$('.'+nextView).offset().top, 1500
);

nextView 是来自另一个函数的变量,它确定导航的哪个部分被单击。基本上,它包含要滚动到视图中的 div 的名称。

有人知道为什么它不起作用吗?还是另一种可行的自动滚动方法?

【问题讨论】:

看看这里:***.com/questions/16475198/jquery-scrolltop-animation 【参考方案1】:

尝试 .position() 而不是 .offset() 看看是否有效。可能需要一些修正。

编辑:它可能与您的选择器有关。使用 html, body 作为 1 个字符串:

$('html, body').animate(
  scrollTop:$('.'+nextView).offset().top, 1500
);

【讨论】:

感谢您的建议,但仍然无法正常工作。同样,它在 chrome 和 Edge 中很好,但在 Firefox 中仍然没有。它甚至没有抛出任何错误,什么也没有。 我正在使用 FF 进行测试,它工作正常。你能发布一个示例页面吗?【参考方案2】:

我对代码做了一点改动,现在它似乎可以工作了。我在 animate 调用之前找到要滚动到的元素的位置,然后将该变量放入 scrollTop 并且它现在可以工作,即使在 IE 中也是如此!

scrollPos = $('.'+nextView).offset().top;
$('html, body').animate(
  scrollTop: scrollPos
, 1500);

【讨论】:

以上是关于ScrollTop 适用于 Chrome 和 Edge,但不适用于 Firefox的主要内容,如果未能解决你的问题,请参考以下文章

jQuery offset()函数 和 scrollTop()函数

WebRTC connectionState 停留在“new” - 仅适用于 Safari,适用于 Chrome 和 FF

css 媒体查询2,适用于Black Goose Bakery网站,LWD5ed

scrollTo() 和 jquery scrollTop() 在 Chrome 中不起作用

innerHTML 适用于 IE 和 Firefox,但不适用于 Chrome

如何使用 jquery animate 滚动到元素跨浏览器