为什么为两个内联块同胞div中的一个设置行高会影响两个div?

时间:2011-03-21 03:03:07

标签: html css css3

我有以下内容:

<div>
    <div style="display:inline-block; ">div_1</div>
    <div style="display:inline-block; line-height:20px;">div_2</div>
</div>

为什么为第二个div设置行高属性也会影响第一个div?如何纠正这个我只需要第二个div受行高影响,因为我需要为第一个div指定一个不同的line-height提前致谢。

更新:

检查jsFiddle.

3 个答案:

答案 0 :(得分:30)

对于测试用例,现在已经很清楚了。

vertical-align: top添加到第一个div:

<div style="display:inline-block; line-height:24px; vertical-align: top" id="div_1">div_1</div>

修正版:http://jsfiddle.net/my6Su/5/

阅读本文以了解display: inline-blockvertical-align之间的关系: http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/

对于视觉演示也很有用:
http://www.brunildo.org/test/inline-block.html

答案 1 :(得分:4)

首先,line-height的效果仅适用于内联元素。当line-height is applied to block,内联块或任何其他类型的非内联元素时,仅effects are on the inline descendant个元素。

其次,在一个行框(一行中包含内联元素的抽象框)中,所有内联元素都沿着基线对齐。当您更改第二个div的行高时,它会在该内联元素的顶部(和底部)添加半个前导。上半场领先推动基线下降,这反过来推动第一个div下降。

我不确定你想要实现的目标,但是,我建议使用vertical-align属性或者只使用相对位置。

答案 2 :(得分:0)

<div>
    <div style="display:inline-block; line-height:10px;">div_1</div>
    <div style="display:inline-block; line-height:20px;">div_2</div>
</div>

试试这个。这将有效。