2012-07-13 62 views
0
<div class="bordered" style="height: 300px; text-align: center"> 
     <div class="bordered inline-blocked" style="height: 100px; vertical-align: middle">XXX</div> 
     <div class="bordered inline-blocked" style="height: 200px; vertical-align: middle">YYY</div> 
    </div> 

Divs XXX和YYY彼此相對垂直居中,即它們在水平線上一個,但不是相對於容器垂直居中。這就是我想要的。爲什麼元素的垂直對齊會影響其兄弟對齊?

現在的問題:

如果我改變兩個垂直對齊的屬性奇怪的事情發生西港島線之一。

  1. 我刪除了XXX vertical-align屬性。結果:XXX向下移動並且定位爲無。 YYY保持不變。
  2. 我將YYY vertical-align屬性設置爲'top'。 YYY保持原位,XXX儘管自己的價值仍然「中等」,但仍與YYY的頂部一致。
  3. 我將YYY vertical-align屬性設置爲'bottom'。 YYY保持原位,XXX儘管自身價值仍然「中等」,但仍與YYY的底部保持一致。

我一直認爲,當一行中有幾個內聯元素時,它們形成一行內聯框,並且所有垂直對齊值都相對於該框應用,即行內框被垂直定位屬性不在其父代內部,而是在父代內部的內聯盒子行內,即在其兄弟姐妹行內。因此,如果我將XXX屬性設置爲'中間',將YYY設置爲'底部',那麼它應該與它們都設置爲中間的情況完全相同,因爲假想內聯框的大小和位置是沒有改變。但事實上,如果它們中的兩個都不是垂直對齊到中間,我不能將這些框垂直居中。

那麼你能解釋一下這個簡單例子裏發生了什麼嗎?

我無法得到的另一件事是如何在此示例中的定位受到行高屬性的影響。

答:

不幸的是,垂直對齊:中間會無法對齊內聯元素就行最大的元素的中間(如你所期望的)。相反,中間值會使元素與假設的小寫「x」(也稱爲「x高度」)的中間對齊。所以,在我看來,這個值實際上應該被稱爲「文本中間」,以正確識別它的功能。 大段引用

http://www.impressivewebs.com/css-vertical-align/,由於雙方黃芪多糖brains911

提醒:

如果與垂直對齊搞亂一些文本添加到您的容器 - 它會顯示其用於對齊基線。

回答

1

當人們嘗試在塊級元素上使用垂直對齊並且得不到結果時。如果您在較大的div內部有一個較小的div,並且想要將較小的那個垂直居中,vertical-align不會對您有所幫助。

更多信息:你可以參考此鏈接:

Understanding CSS’s vertical-align Property

css trick-vertical align properties

+1

對不起,我只是didnt提到,班裏的直列阻止「有屬性 '顯示:inline-block的'組。 – KutaBeach 2012-07-14 06:40:09