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"