overflow:auto
의 "내용"div가있는 "컨테이너"요소가 있다고 가정 해보십시오. 컨테이너의 높이가 창 높이의 비율이며, 내용은 어떤 높이 수 : 요청에 따라페이지로드시 두 요소의 치수를 안정적으로 얻는 방법
<div id="container">// Height dependent on window size
<div id="content">
// Arbitrary amount of content here
</div>
</div>
CSS - 내 "현실 세계"시나리오에 유의하시기 바랍니다, 내용 요소는 테이블 규칙, 실제로
#container {
height:100%;
overflow:auto
}
#content {
border-collapse: collapse;
border-spacing: 0;
}
내가하고 싶은 것은 내용의 높이가 컨테이너의 높이를 초과하는지 확인하고 실제로 무엇인가를하는 것입니다.
그러나, 나는 간단하게 할 경우 : 문은 결코 실행하지 않는 경우 두 개의 높이가 항상 동일한 것으로 계산되기 때문에
는$(document).ready(function(){
var containerH = $('#container').outerHeight();
var contentH = $('#content').outerHeight();
if (contentH > containerH) {
// If the content's too big, do things...
};
});
1, - 나는 경우가 그을 알고 경우에도. 후속 검사는 항상 실제 치수를 나타냅니다.
그래서 나는 엘리먼트가 렌더링이 완료되지 않았을 것이라고 생각했다. (엘리먼트의 스타일을 지정하기 위해 @ font-face를 사용하고있다. 아마도 완성을 기다릴 필요가있다.) 그런 다음 :
$(document).ready(function(){
var container = $('#container');
var content = $('#content');
function getProperHeight(el){
var height = el.load(function(){
var h = this.outerHeight();
return h;
});
return height;
};
var containerH = getProperHeight(container);
var contentH = getProperHeight(content);
console.log(containerH + ' ' + contentH)
};
나는 load()
방법을 사용하여 얻은 가장 가까운,하지만 난 둘 다 기대 값 [개체 개체]를 얻을 수있다.
간단히 말해서 두 요소의 실제 렌더링 된 치수는 어떻게 얻을 수 있습니까?
을 사용하고 있습니다 나는 당신의 문제가 당신이 (문서) .ready() $에이 계산을하고 있다는 것을 생각합니다. 이 코드를 버튼 클릭 이벤트에 배치하고 작동하는지 확인해야합니다. – Hoffmann
나는 당신이 제안하고있는 논리를 본다. 그러나 이것은 페이지로드에서 작동해야한다. 엘리먼트가 거의 확실하게로드되기 때문에 사용자 이벤트에 대한 높이를 얻는 것은 쉽습니다. – verism
버튼 클릭만으로 작동하는지 확인하려고했습니다. 버튼 클릭에서 문제가 발생하면 문제는 $ (document) .ready()가 호출되어 DOM이 계산을 원하는 방식으로 처리하지 못했다는 것입니다. 이 경우 자바 스크립트에서 CSS를 설정하거나 다른 이벤트 가능성을 탐색 할 수 있습니다. – Hoffmann