为什么要使用'html,body'作为scrollTop而不仅仅是'html'

Hec*_*ssa 25 jquery

我从stackoverflow获得了一个滚动到页面顶部的解决方案

$('html, body').animate({scrollTop: $("#page").offset().top}, 2000);
Run Code Online (Sandbox Code Playgroud)

但我不确定为什么要使用'html,body'作为scrollTop而不仅仅是'html'?

Nie*_*sol 27

有些浏览器应用"整体"卷轴来document.documentElement(的<html>元素)和其他人document.body(的<body>元素).为了兼容两者,您必须将滚动应用于两者.

  • 这很麻烦,因为回调会引发两次. (18认同)
  • @Synexis你也可以[debounce](http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/)代替回调函数. (2认同)
  • 我没有详尽地测试过,但它看起来像Firefox(版本41)和IE11仍然使用`document.documentElement`又名`<html>`作为最外面的滚动父级.Edge,Chrome和Safari都通过`document.body`滚动主页面. (2认同)