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

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

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

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

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

【问题讨论】:

标签: javascript jquery google-chrome firefox


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2023-01-14
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2021-06-05
    • 2021-05-07
    相关资源
    最近更新 更多