일반 JavaScript로 div 높이 얻기


312

jQuery를 사용하지 않고 div의 높이를 얻는 방법에 대한 아이디어가 있습니까?

이 질문에 대한 스택 오버플로를 검색하고 있었고 모든 답변이 jQuery를 가리키는 것 같습니다 .height().

내가 좋아하는 뭔가를 시도 myDiv.style.height내 사업부가 있었다하더라도,하지만 아무것도 반환 widthheightCSS에서 설정합니다.



답변:


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

또는

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

clientHeight 패딩을 포함합니다.

offsetHeight 패딩, scrollBar 및 테두리를 포함합니다.


2
는 offsetHeight 나던 wokr 아래 IE10에 quirksmode.org/mobile/tableViewport_desktop.html
fearis

3
scrollHeight포함 된 문서의 높이, 세로 패딩 및 세로 테두리가 포함 된을 사용할 수도 있습니다.
Saeid Zebardast

5
clientHeight또한 동등하지 그래서, 패딩을 포함$.height()
Eevee

2
테두리와 여백도 공간을 차지합니다. :) 및 귀하의 답변 clientHeight에는 패딩이 포함되지 않습니다. 그리고 질문은 모두 언급 $.height()하고 .style.height, 어느 쪽도 아니가, 아스 커를 제안하는 것은 하나를 원하지 않는 패딩을 포함한다.
Eevee

3
참고 : OP는 패딩을 제외한 답변을 요청하지 않았습니다 . 내가 아는 것에 대한 기본 크로스 플랫폼 솔루션은 없습니다.
Dan


22

또 다른 옵션은 getBoundingClientRect 함수를 사용하는 것입니다. 요소의 표시가 '없음'인 경우 getBoundingClientRect는 빈 rect를 반환합니다.

예:

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 에서 찾은 것이 있습니다.divheightwidth

당신이 필요로하는 것입니다 heightwidth패딩을 제외 할 수 있습니다.

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

당신은 downvoters : 이 답변은 내가받은 upvotes에 의해 판단하여 적어도 5 명을 도왔습니다. 마음에 들지 않으면 내가 고칠 수있는 이유를 말해주세요. 그것은 downvotes를 가진 나의 가장 큰 애완 동물 peeve입니다; 당신은 왜 당신이 그것을 내리는지를 거의 말하지 않습니다.


23
div에 세트 height및 / 또는width
hopkins-matt

1
나는 그것이 가정되고 암시 적이라고 생각했다. 내 대답에 언급 된 경고를 원하십니까?
18:41에

2
더 좋습니다. 나는 개인적으로 다른 방법을 정확하지 않은 것으로 생각하지 않습니다. 나는에 대한 사용을 갖고 있다고 감히 것 offsetHeight그리고 clientHeight보다 더 자주 style.height.
홉킨스 매트

1
그들은 나를 위해 일하지 않았다. 그래서이 답변을 게시했습니다.
크레인

1
w3schools가 다른 방법이 정확하지 않다고 어떻게 말하는지 알 수 없습니다.
aknuds1


1

el.clientHeight및에 추가 하여 요소 자체에 설정된 높이에 관계없이 요소 내부의 내용 높이가el.offsetHeight 필요할 때을 사용할 수 있습니다 el.scrollHeight. 더 많은 정보

요소 높이 또는 최대 높이를 내부 동적 컨텐츠의 정확한 높이로 설정하려는 경우 유용 할 수 있습니다. 예를 들면 다음과 같습니다.

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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.