为什么线高增加了额外的高度?

时间:2013-07-18 12:33:34

标签: html css iframe

<div><iframe style="height: 100px"></iframe></div>
<div style="line-height: 0"><iframe style="height: 100px"></iframe></div>

http://jsfiddle.net/p6SD4/

如果您检查DOM,您可以看到第一个div的高度为108px,而第二个div的高度为104px。带边框的iframe是104px,那么为什么在设置行高时添加4个额外像素?

在Mac上测试Chrome 28.0.1500.71。

3 个答案:

答案 0 :(得分:3)

因为iframe位于基线上。但是div必须高到足以包含strut,它也会低于基线,并且其高度由行高确定。

0 line-height = 0px strut height = 0px支柱低于基线。

使用iframe { display:block; }iframe { vertical-align:top; }iframe { vertical-align:bottom; }来阻止这种情况发生。

(显示:阻止线条框停止创建,因此没有支柱.vertical-align:top和vertical-align:bottom释放支柱与iframe共享线框的基线,因此支柱被放置如果行高超过iframe高度,则strut将强制行框高度,因此div高度仍然大于iframe高度,无论垂直对齐设置如何)

答案 1 :(得分:2)

在Chrome 28中,这两个div似乎都是109px高。请记住,vertical-align元素的默认<iframe>值和所有内联元素都是基线 - 将此值更改为底部会将两个元素对齐你可能期望的。

http://jsfiddle.net/p6SD4/1/

答案 2 :(得分:0)

这可能取决于您的浏览器。使用Firefox和Chrome,两个IFRAME元素的高度均为104像素(100px + 4px的边框)。

您使用的浏览器是什么?你试过border =“0”吗?