2012-05-28 74 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

相關問題