Skip to content

window 与滚动

浏览器 的宽高

client 与 inner 都可以,但是存在细微差别:

clientWidth/clientHeight 不会包括滚动条

innerWidth/innerHeight 会包括滚动条

document 的宽高

理论上,document.documentElement.scrollWidth/scrollHeight 就是

但是实际上可靠的获取方式

js
let scrollHeight = Math.max(
  document.body.scrollHeight,
  document.documentElement.scrollHeight,
  document.body.offsetHeight,
  document.documentElement.offsetHeight,
  document.body.clientHeight,
  document.documentElement.clientHeight
);

滚动信息

window.pageXOffset/pageYOffset 即可

历史原因:
window.pageXOffset 是 window.scrollX 的别名
window.pageYOffset 是 window.scrollY 的别名

document.documentElement.scrollLeft/scrollTop 也是可以的,但是 safari 有 bug,需要使用 document.body 获取。

滚动方法

警告

必须在 DOM 完全构建好之后才能通过 JavaScript 滚动页面。

警告

<head> 中的 script 不生效

scrollBy(x,y) ,相对路径
如:scrollBy(0,10) 向下滚动 10 px

scrollTo(pageX,pageY),绝对定位
scrollTo(0,0) 回到顶部

elem.scrollIntoView(boolean) 滚动到 elem 可见
true elem 在顶部
false elem 在底部

禁止滚动

document.body.style.overflow = "hidden"