为了账号安全,请及时绑定邮箱和手机立即绑定

document.documentElement.scrollTop和document.body.

document.documentElement.scrollTop和document.body.

杨__羊羊 2019-03-06 15:39:06
什么情况下会使document.documentElement.scrollTop和document.body.scrollTop同时为0?别和我说什么DTD的问题,我想问的是他俩同时为0了,之前使用document.body.scrollTop || document.documentElement.scrollTop是可以获取到屏幕滚动高度的,但是项目多人参与,不知道改了哪里,现在这两个会去到的值都变成0了。
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

受上回答启发确实跟css有关,

但是:


html {

    height: 100%;

    overflow: scroll;

}

这样写是获取不到值的

html {

    height: 100%;

    overflow: visible;

}

这样写就可以获取到值了,所以跟html的高度是否是100%并无关系


查看完整回答
反对 回复 2019-03-08
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

和你的页面布局有关。

正常情况下滚动条是属于 html 的,页面撑开可以正常获取document.documentElement.scrollTop。

在滚动条属于 html 或 body 的情况下document.body.scrollTop || document.documentElement.scrollTop能正常拿到相应值。


如果都为0,那说明:


当前滚动条位置就是在顶部。

没有产生滚动。

你当前的滚动条不再属于 html 或者 body。

其它我没想到的= =。

比如以下这种结构对应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。


查看完整回答
反对 回复 2019-03-08
  • 2 回答
  • 0 关注
  • 818 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号