javascript - div 中的 scrollTop 不起作用

标签 javascript jquery html css scrolltop

我有一段久经考验的代码,对我来说一直运行良好,但我正在用它尝试一些新的东西。我没有使用 body 的滚动位置,而是有一个 ID 为 #main 的 div,它有 auto 溢出。

我遇到的问题是,当您单击页面链接(从 #main div 内部或外部)时,页面会移动但不会移动到正确的位置。可能导致此问题的原因

$('.scrollto').click(function() {
       var elementClicked = $(this).attr("href");
       var destination = $(elementClicked).offset().top;
       $("#main:not(:animated)").animate({ scrollTop: destination} );
       return false;
});

这是 #main 的 CSS:

#main { 
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: auto;
  height: auto;
  z-index: 2;
  overflow: auto;
  overflow-x: hidden;
  background: #fff;
  -webkit-overflow-scrolling: touch;
}

编辑

在@Moje 的帮助下,我在这里重现了这个问题:http://codepen.io/anon/pen/xbLyJ

单击“单击我转到目标 1”链接。在该部分中,您会看到另一个指向目标 2 的链接。单击该链接,它不会完全转到正确的 ID。如果您一直点击同一个链接,每次点击时页面都会上下移动。

最佳答案

我看了你的 codepen 例子,我注意到一个错误。错误是您没有添加实际的滚动值。一个简单的例子是,当您单击并且 scrollTop 值为 0 时,它工作正常,但是当 scrollTop 值不为 0 时 destination 值与 destination 滚动为 0 时的值。 你可以看到 fork 的例子 here . 此外,我建议您使用 event.preventDefault() 而不是 return false;,以避免 haschange 或 URL 重定向。

关于javascript - div 中的 scrollTop 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19822231/

相关文章:

javascript - 设置 observable 值后清除 jQuery 事件

javascript - 没有固定高度的滚动div

jQuery UI Accordion 创建事件未触发

jquery - Jquery中求和两个值的问题

javascript - 使用 JavaScript 检查浏览器是否支持 css3 和/或 HTML5 属性

javascript - 调整 HTML 内容的大小以使其适合 div 并且还需要保持纵横比

javascript - 当依赖项未使用 '*' 导入时,如何在 WebPack 中将依赖项标记为外部?

javascript - Foundation 6.2 Slider 设置值与js

javascript - 'click'/'dblclick' 上同一类的不同功能

php - Symfony 2 验证消息被默认验证覆盖