【发布时间】:2016-04-12 12:25:37
【问题描述】:
请注意,.height() 将始终返回内容高度,无论 CSS box-sizing 属性的值。 从 jQuery 1.8 开始,这个 可能需要检索 CSS 高度加上 box-sizing 属性和 然后在每个元素上减去任何潜在的边框和填充 该元素具有 box-sizing:border-box。为避免这种惩罚,请使用 .css("height") 而不是 .height()。
我尝试了以下示例
<div id='wrapper' class='boxA'>
<div class='boxB'>
Test
</div>
</div>
使用 CSS
.boxA{
padding: 20px;
background-color: yellow;
box-sizing: border-box;
margin: 50px;
}
.boxB{
height: 50px;
background-color: red;
}
根据 jQUery API,我确信
$('#wrapper').height($('#wrapper').height());
将boxA的高度设置为50px(因为内容高度是50px)但我发现高度设置为90px。 但是,如果我使用
$('#wrapper').css('height', $('#wrapper').height()+"px");
boxA 的高度为 50px,因此会缩小。为什么第一种方法也不能产生 50px 的高度?
另外,命令
$('#wrapper').height($('#wrapper').css('height'));
将boxA的高度设置为130px,但$('#wrapper').css('height')返回90。这里发生了什么?
您可以在jFiddle 中找到这些示例。
【问题讨论】:
-
"...从 jQuery 1.8 开始,这可能需要检索 CSS 高度和 box-sizing 属性,然后 减去 任何潜在的
border和 @987654330 @ 当元素具有 box-sizing:border-box 时在每个元素上。” -
@Vucko 我现在添加了完整的评论。它仍然没有向我解释我的帖子中描述的奇怪行为。