我正在尝试将一些(垂直堆叠的)display:block元素放置在一个display:inline-block元素内部。根据CSS规范,inline-block元素应该是一个包含块,因此它可以在其中有display:block元素,而且这些元素不应影响其余布局。
然而,display:inline-block元素内部的display:block元素会破坏页面的其余部分;即使在inline-block中没有任何东西,或者只有一个基本元素,如段落,也会产生相同的问题;只有简单的文本避免了对页面其余部分的干扰(通过干扰我指的是向下移动其他div,例如在这种情况下,左侧红色块向下移动了一行,并且在它上面出现了一片空白)。我正在使用Firefox 3.0.6。
<html><head><style type="text/css">
#left {
display: inline-block;
background: red;
width: 20%;
height: 100%;
}
#right {
display: inline-block;
background: green;
width: 80%;
height: 100%;
}
</style></head><body>
<div id="left">Left</div><div id="right">Right</div>
</body></html>
上面的显示为两个窗格,左边是红色,右边是绿色,正如预期。如果我将 "Right" 改为,会发生什么?<p>Right</p>
如果我尝试移除它,或者完全删除它,或者(就像我想做的那样)用一些div来替换它,会导致格式错误。
这是Firefox的bug吗?还是我做错了什么?或者我的期望有误?(值得注意的是,IE 7同样混乱,似乎它不理解inline-block;不过这并不重要,因为这是一个内部应用程序,并且我只使用Firefox)。我也许可以使用float/margin来获得所需的布局,但我希望不必这样做。