获取页面滚动距离
兼容各浏览器获取页面滚动距离的方法
问题
如何获取页面的滚动距离值?
解答
获取页面滚动距离有多种方式,不同属性的浏览器支持存在差异。
pageYOffset
属于 window 对象,IE9+、Firefox、Chrome、Opera 均支持,忽略 DOCTYPE 定义规则。
window.pageYOffset
scrollY
属于 window 对象,Firefox、Chrome、Opera 支持,IE 不支持,忽略 DOCTYPE 定义规则。
window.scrollY
document.body.scrollTop
页面未定义 DOCTYPE 文档头时,所有浏览器都支持此属性。
document.body.scrollTop
document.documentElement.scrollTop
页面定义了 DOCTYPE 文档头时,IE、Firefox、Opera(presto 内核)支持此属性,但在 Chrome 和 Safari 下值为 0。
document.documentElement.scrollTop // Chrome、Safari 下为 0
兼容方案
优先使用 window.pageYOffset,然后降级使用 scrollTop。
var _scrollLeft = window.scrollX || window.pageXOffset || document.documentElement.scrollLeft
var _scrollTop = window.scrollY || window.pageYOffset || document.documentElement.scrollTop
关键点
window.pageYOffset兼容性最好(IE9+),优先使用window.scrollY不支持 IE 浏览器document.body.scrollTop仅在未定义 DOCTYPE 时可用document.documentElement.scrollTop在 Chrome/Safari 下需要 DOCTYPE,但值可能为 0- 使用逻辑或运算符
||实现降级兼容
目录