FireFox与Chrome的scrollTop的兼容问题
2017-05-10 本文已影响0人
牛奶是本命___
做页面时需要判断页面滚动距离让列表对应文字变色,之前直接用document.body.scrollTop
获取滚动距离,结果打开火狐发现不可以,获取不到
Paste_Image.png原生接口测试
document.documentElement
即 <html>
元素,而 document.body
即 <body>
元素。
测试结果,在火狐上只能通过html
元素来获取和设定页面滚动高度,而在谷歌上反之只能用body
元素来获取和设定
Paste_Image.pngjquery接口测试
采用 $(document)
可以实现对获取和设定scrollTop
的兼容
scrollTop动画实现测试
虽然实现了兼容,但为了有更好的效果,希望采用动画的方式滚动到页面的某位置,而不是直接跳转,这里采用jquery
的 animate
函数来实现。
发现虽然可以采用$(document)
来实现获取和设定,但动画效果都无法使用,还是只能用body
元素和html
元素来实现。
最终解决
- 获取或直接设定当前页面滚动高度:
$(document).scrollTop();//获取,兼容火狐谷歌
- 有动画效果的设定当前页面滚动高度:
$("body,html").animate({ scrollTop: ... });//动画滚动效果,兼容火狐谷歌
如果想完美兼容各大浏览器的scrolltop
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
ie8、7、6 兼容scroll事件
$(window).bind("scroll",function(){ //…… });