使用普通JavaScript获取div高度


312

关于如何在不使用jQuery的情况下获得div高度的任何想法?

我正在寻找Stack Overflow这个问题,似乎每个答案都指向jQuery的.height()

我尝试了类似的方法myDiv.style.height,但是即使我的div具有CSS widthheight在CSS中进行了设置,它也没有返回任何内容。



Answers:


587
var clientHeight = document.getElementById('myDiv').clientHeight;

要么

var offsetHeight = document.getElementById('myDiv').offsetHeight;

clientHeight 包括填充。

offsetHeight 包括填充,scrollBar和边框。



3
您还可以使用scrollHeight其中包括所包含文档的高度,垂直填充和垂直边框。
塞伊德·塞巴达斯特

5
clientHeight还包括填充,因此不等同于$.height()
Eevee

2
边界和边缘也占据了空间。:)并且您的答案暗示clientHeight不包括填充。这个问题同时提到$.height().style.height,两者都不包含填充,这表明提问者也不希望这样做。
伊芙

3
注意:OP不会要求排除填充的答案。我所知道的没有本地的跨平台解决方案。


22

另一个选择是使用getBoundingClientRect函数。请注意,如果元素的显示为“ none”,则getBoundingClientRect将返回一个空矩形。

例:

var elem = document.getElementById("myDiv");
if(elem) {
   var rect = elem.getBoundingClientRect();
   console.log(rect.height);  
}

2
我认为这是更好的解决方案
Intervalia

11
var myDiv = document.getElementById('myDiv'); //get #myDiv
alert(myDiv.clientHeight);

clientHeight和clientWidth是您要寻找的。

offsetHeight和offsetWidth也会返回高度和宽度,但它包括边框和滚动条。根据情况,可以使用其中一种。

希望这可以帮助。


2

其他答案对我不起作用。这是我在w3schools上发现的,假设div拥有height和和或width设置。

您所需要做的就是heightwidth排除填充。

    var height = document.getElementById('myDiv').style.height;
    var width = document.getElementById('myDiv').style.width;

的投票失败者:根据我收到的投票结果,此答案至少帮助了5个人。如果您不喜欢它,请告诉我原因,以便我进行修复。那是我最大的不高兴的表情。您很少告诉我为什么要投票反对。


23
除非div设置了height和/或width
Hopkins-matt

1
我认为这是假定的和暗含的。您要我回答中提到的警告吗?
伸长了脖子

2
这个比较好。我个人认为其他方法不准确。我冒昧地说,我有一个使用了offsetHeightclientHeight往往比style.height
Hopkins-matt 2015年

1
他们不是为我工作。这就是为什么我发布了这个答案。
2015年

1
我看不到w3schools如何说其他方法不准确。
aknuds1 2015年

1
<div id="item">show taille height</div>
<script>
    alert(document.getElementById('item').offsetHeight);
</script>

Jsfiddle


1

除了el.clientHeight和之外el.offsetHeight,当您需要元素内部内容的高度(无论元素本身设置的高度如何)时,都可以使用el.scrollHeight更多信息

如果要将元素的高度或max-height设置为内部动态内容的确切高度,这将很有用。例如:

var el = document.getElementById('myDiv')

el.style.maxHeight = el.scrollHeight+'px'

对于任何想知道的人来说,这对于具有动态高度内容的下拉菜单进行CSS过渡非常有用
cronoklee


1

这是另一种选择:

var classElements = document.getElementsByClassName("className");

function setClassHeight (classElements, desiredHeightValue) 
    {
        var arrayElements = Object.entries(classElements);
        for(var i = 0; i< arrayElements.length; i++) {
            arrayElements[i][1].style.height = desiredHeightValue;
        }

    }

1

一种选择是

const styleElement = getComputedStyle(document.getElementById("myDiv"));
console.log(styleElement.height);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.