使用原生 js 如何获取元素真实高度包括(margin)?
本人写了一个很愚蠢的方法(只能分别获取 width、marginTop、paddingTop等, 这样获取效率太低,有没方法可以一次获取得到呢?)
html:
<div class="container">
<p class="text">text</p>
</div>
css:
.text {
margin: 5px 10px 15px 20px;
padding: 25px 10px 5px 3px;
}
js:
var textNode = document.querySelector('.text')
方法1:
// 只能分别获取 width、marginTop、paddingTop等, 这样获取效率太低,有没方法可以一次获取得到呢?
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}
else{
return document.defaultView.getComputedStyle(obj,null)[attr];
}
}
var width = getStyle(textNode, 'width')
var marginTop = getStyle(textNode, 'marginTop')
......
网页可见区域宽: document.documentElement.clientWidth;
网页可见区域高: document.documentElement.clientHeight;
网页正文全文宽: document.documentElement.scrollWidth;
网页正文全文高: document.documentElement.scrollHeight;
网页被卷去的高(ff):document.body.scrollTop;
网页被卷去的高(ie): document.documentElement.scrollTop;
网页被卷去的左:document.body.scrollLeft;
网页正文部分上:window.screenTop;
网页正文部分左:window.screenLeft;
某个元素的宽度:obj.offsetWidth;
某个元素的高度:obj.offsetHeight;
某个元素的上边界到body最顶部的距离:obj.offsetTop;(在元素的包含元素不含滚动条的情况下)
某个元素的左边界到body最左边的距离:obj.offsetLeft;(在元素的包含元素不含滚动条的情况下)
返回当前元素的上边界到它的包含元素的上边界的偏移量:obj.offsetTop(在元素的包含元素含滚动条的情况下)
返回当前元素的左边界到它的包含元素的左边界的偏移量:obj.offsetLeft(在元素的包含元素含滚动条的情况下)
返回
window.getComputedStyle(textNode, null)
就够了
引用一张图片,可能会对你有帮助