什么情况下会使document.documentElement.scrollTop和document.body.scrollTop同时为0?
别和我说什么DTD的问题,我想问的是他俩同时为0了,之前使用
document.body.scrollTop || document.documentElement.scrollTop
是可以获取到屏幕滚动高度的,但是项目多人参与,不知道改了哪里,现在这两个会去到的值都变成0了。
什么情况下会使document.documentElement.scrollTop和document.body.scrollTop同时为0?
别和我说什么DTD的问题,我想问的是他俩同时为0了,之前使用
document.body.scrollTop || document.documentElement.scrollTop
是可以获取到屏幕滚动高度的,但是项目多人参与,不知道改了哪里,现在这两个会去到的值都变成0了。
和你的页面布局有关。
正常情况下滚动条是属于 html 的,页面撑开可以正常获取document.documentElement.scrollTop
。
在滚动条属于 html 或 body 的情况下document.body.scrollTop || document.documentElement.scrollTop
能正常拿到相应值。
如果都为0,那说明:
比如以下这种结构对应3:
<!DOCTYPE html>
<html>
<body>
<div class="wrapper">
<div class="main"></div>
</div>
</body>
</html>
<style>
html, body, .wrapper {
width: 100%;
height: 100%;
overflow: auto;
}
.main {
height: 10000px;
}
</style>
这样.main撑开的滚动条其实是属于.wrapper的。只有wrapper.scrollTop
可以获取相应的值。document.body.scrollTop || document.documentElement.scrollTop
自然始终为0。
这也太巧了吧,我今天也是这样的情况,本来上拉加载好好的,不知道为什么突然就挂了,定位发现是
document.body.scrollTop
始终为0
我一开始也以为是css造成了,但是我也没改啊0.0,最后放弃了,将这个获取方法更兼容的写了下就好了。
let scrollTop = window.pageYOffset
|| document.documentElement.scrollTop
|| document.body.scrollTop
|| 0;
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
5 回答2k 阅读
受上回答启发确实跟css有关,
但是: