获取元素的高度
style.height
包括元素的滚动条,不包括边框,值为string,带单位
px
使用style.height最坑的就是height必须使用行内样式,使用内联式和外嵌式是不行的
- height在
<style>
标签中设置,使用style.height
是获取不到值的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style> .div { height: 100px; } </style>
</head>
<body>
<div class="div">
hello world
</div>
<script> let div = document.querySelector(".div"); console.log(div.style.height); </script>
</body>
</html>
-
使用外部导入的css同样也获取不到
-
只有在行内才能获取到值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="div" style="height: 100px;border: 1px soled #000;">
hello world
</div>
<script> let div = document.querySelector(".div"); //输出的是100px,并不是102px console.log(div.style.height); </script>
</body>
</html>
clientHeight
这个属性是只读属性,对于没有定义CSS或者内联布局盒子的元素为0,否则,它是元素内部的高度(单位像素),包含内边距,但不包括水平滚动条、边框和外边距。
clientHeight 可以通过 CSS height + CSS padding - 水平滚动条高度 (如果存在)来计算.
不包括元素的滚动条和边框,值为number,不是string,即不带
px
可以使行内、内联和外嵌
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style> .div { height: 100px; border: 1px solid #000; } </style>
</head>
<body>
<div class="div">
hello world
</div>
<script> let div = document.querySelector(".div"); console.log(div.clientHeight); </script>
</body>
</html>
offsetHeight
HTMLElement.offsetHeight是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数
包括元素的滚动条和边框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.div {
height: 100px;
border: 1px solid #000;
}
</style>
</head>
<body>
<div class="div">
hello world
</div>
<script>
let div = document.querySelector(".div");
console.log(div.offsetHeight);
</script>
</body>
</html>
scrollHeight
用于判定元素是否滚动到底
运用
如果元素滚动到底,下面等式返回true,没有则返回false
element.scrollHeight - element.scrollTop === element.clientHeight