document.documentElement与document.body

在写遮罩层让弹出的提示框居中时,用到了clientHeight与clientWidth,代码一开始我是这样写的:

   var heightHit = document.body.clientHeight || document.documentElement.clientHeight;
    var widthHit = document.body.clientWidth || document.documentElement.clientWidth

问题来了,提示框有居中但不是在当前的屏幕居中,而是在整个界面居中(获取的值与scrollHeight的值相同,包括了滚动条卷起的高度),不知道问题出在哪里,以前也是这样写都完全没有问题,后来查阅了资料,发现了问题,问题出在document.body.clientHeight与document.documentElement.clientHeight上。为了兼容我们一般都这么写

document.body.clientHeight || document.documentElement.clientHeight;

我把body放在前面,条件成了会直接去获取body的高度,而不是当前可见区域屏幕的高度,之前误以为两句代码获取的高度是一样的。
实际上:
ocument.body.clientWidth ==>body对象的宽度
document.body.clientHeight ==> body对象的高度
document.documentElement.clientWidth ==> 可见区域宽度(一屏幕宽度)
document.documentElement.clientHeight ==> 可见区域高度(一屏幕高度)

就代码改成

document.documentElement.clientHeight || document.body.clientHeight;
     document.documentElement.clientWidth || document.body.clientWidth

获取到的高度就正常了,提示框就可以显示在当前一屏中心位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值