window.innerHeight和document.documentElement.clientHeight区别

时间:2023-03-08 22:45:51

今天有人问我这个问题,做了个小例子来记录一下子。

首先这两个都是获取可视区域的高度,那他们有什么区别呢

1.window.innerHeight属于BOM(浏览器对象模型),而document.documentElement.clientHeight则属于文档对象模型

2.window.innerHeight获取的高度包含横向滚动条,而document.documentElement.clientHeight不包含横向滚动条

做了一个小示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
html,body{
margin:;
padding:;
height: 100%;
width: 100%;
}
.box{
height: 100%;
width: 100%;
background-color: red;
}
</style>
</head>
<body>
<div class="box"></div>
<script>
console.log('innerHeight:'+ window.innerHeight)
console.log('clientHeight:'+ document.documentElement.clientHeight)
</script> </body>
</html>

此时运行打印结果:

innerHeight:760
clientHeight:760

可以看到没有横向滚动条时两者是相等的

现在我们将上面代码中box的宽度改为120%,使之出现横向滚动条

再看看结果

innerHeight:760
clientHeight:743

可以看到document.documentElement.clientHeight的高度少了一些,原因就是document.documentElement.clientHeight不包括横向滚动条