CSS에 높이가 설정되지 않은 div의 높이 가져 오기


93

.height()CSS 규칙 집합이 먼저 필요하기 때문에 jQuery 메서드를 사용할 수없는 요소에 대한 CSS 높이 규칙 집합이없는 경우 요소의 높이를 가져올 수있는 방법이 있습니까? 높이를 얻는 다른 방법이 있습니까?


2
height()CSS 규칙이 필요 하다고 생각하는 이유는 무엇입니까 ?
James Montagne 2012 년

height()요소의 계산 된 높이를 가져옵니다 ...
elclanrs

1
숨겨진 요소 내부의 높이를 얻으려는 것 같습니까? 또는 요소 자체가 숨겨집니다. 할 수 없습니다!
charlietfl 2012 년

heightCSS 설정에 대한 요구 사항이 없으므로 코드를 포함하십시오 . 이 링크는 jquery와 관련이 없습니다.
James Montagne 2012 년

그 "통찰"링크는 7 년이되었습니다!
charlietfl

답변:


224

jQuery .height는 요소의 높이를 반환합니다. 계산 된 높이를 결정하므로 CSS 정의가 필요하지 않습니다.

데모

.height(), .innerHeight()또는 outerHeight()필요한 것을 사용할 수 있습니다 .

여기에 이미지 설명 입력

.height() -패딩, 테두리 및 여백을 제외한 요소의 높이를 반환합니다.

.innerHeight() -요소의 높이에 패딩이 포함되지만 테두리와 여백은 제외됩니다.

.outerHeight() -테두리를 포함한 div의 높이를 반환하지만 여백은 제외합니다.

.outerHeight(true) -여백을 포함하여 div의 높이를 반환합니다.

라이브 데모는 아래 코드 스 니펫을 확인하십시오. :)

$(function() {
  var $heightTest = $('#heightTest');
  $heightTest.html('Div style set as "height: 180px; padding: 10px; margin: 10px; border: 2px solid blue;"')
    .append('<p>Height (.height() returns) : ' + $heightTest.height() + ' [Just Height]</p>')
    .append('<p>Inner Height (.innerHeight() returns): ' + $heightTest.innerHeight() + ' [Height + Padding (without border)]</p>')
    .append('<p>Outer Height (.outerHeight() returns): ' + $heightTest.outerHeight() + ' [Height + Padding + Border]</p>')
    .append('<p>Outer Height (.outerHeight(true) returns): ' + $heightTest.outerHeight(true) + ' [Height + Padding + Border + Margin]</p>')
});
div { font-size: 0.9em; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="heightTest" style="height: 150px; padding: 10px; margin: 10px; border: 2px solid blue; overflow: hidden; ">
</div>


37

다른 사람들이 같은 문제를 겪을 경우를 대비하여 메모하십시오.

나는 같은 문제가 있었고 다른 답을 찾았습니다. 나는 높이가 내용의 요구에 의해 결정되는 사업부의 높이를 받고하는 것은에서 시작하는 것을 발견 window.load , 또는 window.scroll 하지 document.ready 이미지를로드하기 전에, 그렇지 않으면 내가 즉, 홀수 높이 / 작은 높이를 얻을. 나는 또한 outerHeight ()를 사용했습니다 .

var currentHeight = 0;
$(window).load(function() {
    //get the natural page height -set it in variable above.

    currentHeight = $('#js_content_container').outerHeight();

    console.log("set current height on load = " + currentHeight)
    console.log("content height function (should be 374)  = " + contentHeight());   

});

1
사용 / 인쇄 한 후에 높이를 변경하는 더 많은 지침이 있기 때문에 아마도 이상한 높이를 얻게 될 것입니다. 대본 끝에서 높이를 요청하는 것이 좋습니다
Gjaa

10

jQuery 에서 이것을 할 수 있습니다. 모든 옵션을 시도 .height(), .innerHeight()또는 .outerHeight().

$('document').ready(function() {
    $('#right_div').css({'height': $('#left_div').innerHeight()});
});

스크린 샷 예

여기에 이미지 설명 입력

도움이 되었기를 바랍니다. 감사!!


8

또한 div가 현재 DOM에 추가 되고 표시 되는지 확인합니다 .


13
이것은 답변보다 댓글로 더 적합 할 수 있습니다.
kkuilla 2014-06-18

4
그는 댓글 권한이 없었을 것입니다.
StackOverflowed

4
요소가 처음부터 DOM에 연결되지 않으면 다른 답변이 작동하지 않기 때문에 이것은 중요한 정보라고 생각합니다.
Guido
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.