空内联块元素的垂直对齐

时间:2009-12-11 04:59:56

标签: html css standards

考虑以下html / css:

<style>
span
{
  display:inline-block;
  width:5em;
  height:5em;
  padding:1em;
}
</style>

a
<span style="background-color:blue;">b</span>
<span style="background-color:green;"></span>
<span style="background-color:red;">c</span>
d

蓝色和红色方框以及方框内部和周围的文字水平排列。空的绿色框没有;它出现在另外两个方框的上方。如果我在绿色框中添加一些文本,则此行为会停止,并且所有内容都按照我希望的方式排列。

这在IE8(标准模式),FireFox 3.0和Chrome中都是一致的,所以我假设有一些我不理解的空内联块元素属性。

我可以通过指定vertical-align属性使这些框排成一行,但是这四个文本值不再对齐。有什么想法吗?我很难过这个。

4 个答案:

答案 0 :(得分:8)

使跨度顶部对齐,然后负边距等于填充,并且您不需要非破坏空间黑客。

span
{
    display:inline-block;
    width:5em;
    height:5em;
    padding:1em;
    vertical-align:top;
    margin-top: -1em;
}



a
    <span style="background-color:blue;">b</span>
    <span style="background-color:green;"></span>
    <span style="background-color:red;">c</span>
d

答案 1 :(得分:0)

尝试在绿色范围内添加&nbsp;

答案 2 :(得分:0)

a
<span style="background-color:blue;">b</span>
<span style="background-color:green;">&nbsp;</span>
<span style="background-color:red;">c</span>
d

答案 3 :(得分:0)

以防万一仍然可以帮助某人,另一个解决方案,要求从CSS中获得一些空间:

  span:empty:before {
    content: "\0020";
    display: inline-block;
  }