2012-05-28 49 views
3

看到这个fiddle。当我拿出文本时,跨度很好地排列在一起。当我向一个文本添加文本时,它在页面中显示较低。为什么向跨度添加文本会改变其位置?

<div> 
    <span id="first"> 
    </span> 
    <span id="second"> 
     Text 
    </span> 
</div> 

span#first { 
    display:inline-block; 
    width: 100px; 
    height: 100px; 
    background-color: red;  
} 

span#second { 
    display: inline-block; 
    width: 100px; 
    height: 100px; 
    background-color: yellow; 
} 
+1

很奇怪的问题,但我尽量避免使用“inline-block”。解决这个问题的方法就是在空的范围内放置一个' '。看起来这与'inline-block'元素没有任何内容有关。 –

+0

'vertical-align:bottom;'在没有内容的第一个跨度上。 –

回答

8

vertical-align默认值是baselineCSS spec表示对于vertical-align: baseline

将框的基线与父框的基线对齐。如果该框没有基线,请将框的底部与父母的基线对齐。

空块没有基线,所以span的底部与父div的基线对齐。下一个span,因为它具有文本(因此是基线),因此将文本与div的基线对齐。

如果您在span元素上设置了vertical-align: top,它们应该正确排列。

+1

+1如果可能引用CSS规范我会给奖金 –

3

尝试增加浮动:左,像

span#first { 
    display:inline-block;   
    float: left; 
    width: 100px; 
    height: 100px; 
    background-color: red; 
} 
span#second { 
    display: inline-block; 
    float: left;  
    width: 100px; 
    height: 100px; 
    background-color: yellow; 
} 

参见:jsFiddle

+0

很好 - 也有效 - 但我更喜欢vertical-align top作为更“有意”的和有意义的解决方案。总是很好地知道做同样的事情的另一种方式 - 谢谢 – msanjay

+0

谢谢:)解决 – Savoo

相关问题