有效的无法工作的scrolltop

Bho*_*yar 33 jquery

我正在尝试滚动动画,但我的代码没有运气...

我有这个jquery

$(window).scrollTop(200);
Run Code Online (Sandbox Code Playgroud)

现在想给动画效果

所以试过这些但不起作用:

1. $(window).animate({scrollTop:200},1000);
2. $('body').animate({scrollTop: 200}, 1000);
Run Code Online (Sandbox Code Playgroud)

我在这样的点击功能中应用了这个:

$('.goto').click(function(){
    $(window).scrollTop(485); // its working
});
Run Code Online (Sandbox Code Playgroud)

而现在我想要制作动画而不是工作......

Vuc*_*cko 60

您必须使用$('html,body')而不是$(window)因为window没有scrollTop属性.

$('#scroll-bottom').on('click', function() {
  $('html, body').animate({
    scrollTop: 2000
  }, 2000); // for all browsers
  
  // $('html').animate({scrollTop: 2000}, 2000); // works in Firefox and Chrome
  // $('body').animate({scrollTop: 2000}, 2000); // works in Safari
})
Run Code Online (Sandbox Code Playgroud)
#top {
  margin-bottom: 2000px;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="top">
  <button id="scroll-bottom">scroll</button>
</div>
<div>bottom</div>
Run Code Online (Sandbox Code Playgroud)

  • 是的,在_chrome_和_safari_适用于`$('html,body')`和`$(body)`,但_firefox_适用于`$('html,body')`和`$(html)`.显然,`scrolltop`有一些浏览器兼容性问题.但是,使用`$('html,body')`,这似乎适用于两者. (3认同)

Mic*_*lík 46

如果你有html和身体风格高度:100%; 它不起作用

height: auto;
min-height: 100%;
Run Code Online (Sandbox Code Playgroud)