假设我有一个“容器”元素,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...
};
});
if 语句永远不会运行,因为两个高度总是被计算为相等 - 即使我知道事实并非如此。随后的检查总是显示实际尺寸。
所以我想:也许元素还没有完成渲染(我正在使用@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()
方法得到的最接近的值,但我得到了两个预期值的 [object Object]。
简而言之 - 我怎样才能获得两个元素的实际渲染尺寸?