2015-04-04 69 views
1

我已閱讀variousarticlesvertical-align。我也看過this SO question,但bothanswers說這是因爲周圍文本默認爲vertical-align: baseline;。然而,這是不低於的情況:垂直對齊大寫字母而不是小寫字母的中間?

* 
 
{ 
 
    margin: 0; 
 
    padding: 0; 
 
    vertical-align: middle; 
 
    /* font-size: 1em; and line-height: 1em; do not change anything */ 
 
}
<span>0<span>0<span>0<span>0<span>0<span>0<span>0<span>0<span>0<span>0</span></span></span></span></span></span></span></span></span></span>

一切都被設置爲vertical-align: middle;,但仍然有文字的向下偏斜。有趣的是,one of the answers引用了MDN,其中指出vertical-align: middle;與父元素中的小寫字母的中間對齊。這解釋了奇怪的傾斜,但即使所有小寫字母,傾斜still happens。使用display: inline-block;doesn't work either

我會拋開我的看法,反對這是多麼直觀,而是問:有沒有一種方法來vertical-align與中間的大寫字母而不是?或者,更好的是,中間的整行?我期望保留HTML的結構,同時還允許images and other tall things的行 - 不只是文字。

簡而言之:偏斜是我想要的不是,但我仍然希望內聯元素垂直對齊到他們行的中間,而不管HTML結構如何。

編輯:with vertical-alignwithout vertical-align(使觀看者儘可能寬)

+1

你在jsFiddle中看到的歪斜是預期的行爲,因爲'span'標籤是嵌套的。樣式從一個嵌套級別到另一個嵌套級別,將每個孩子的頂部與父級的中間對齊。如果你只是刪除垂直對齊,文本保持直線。目前還不清楚你想要從榜樣中排列出什麼;你可以提供一個更具體的問題,你正試圖解決垂直對齊? – dartonw 2015-04-04 02:35:58

+0

@dartonw'vertical-align:middle;'不會將孩子的頂部與父級的中間對齊 - 它會將孩子的中間與父級中的小寫字母的中間對齊。如果你所說的是真實的話,那麼偏差會更加誇張。 – 2015-04-04 03:03:22

+0

元素是否有特定的原因必須嵌套?只需按照您想要的方式跨越並行功能即可。 – DACrosby 2015-04-04 03:34:27

回答

0

vertical-align旨在設定兄弟元素("elements set next to each other on a line")的對準 - 不從父到子。

在這個例子中,我有幾個span彼此相鄰,他們正確對齊。當你在沒有兄弟元素的情況下嵌套它們時,對齊方式不知道該對齊到什麼位置(好吧,我不知道它在leas上對齊的是什麼,但沒有直接的意思)。如果你給嵌套元素一個兄弟,他們再次正確對齊。

* { 
 
    margin: 0; 
 
    padding: 0; 
 
    vertical-align: middle; 
 
    border-top: 1px solid #ccc; 
 
}
<span>0</span> 
 
<span>0</span> 
 
<span>P</span> 
 
<span>p</span> 
 
<span>R</span> 
 
<span>r</span> 
 
<span>q</span> 
 
<span>Q</span> 
 
<span>0 
 
    1<span> 
 
    2<span> 
 
     3<span> 
 
     4<span> 
 
      5 
 
      <span>5.1</span> 
 
      <span>5.2</span> 
 
      <span>5.3</span> 
 
      <span>5.4</span> 
 
     </span> 
 
     </span> 
 
    </span> 
 
    </span> 
 
</span>

更新

看來你正在尋找根本就沒有設置vertical-align屬性的。瀏覽器使用固有的功能,因爲你正在尋找

+0

即使在你自己的例子中,問題很明顯 - 看看空間是如何比字母更高的像素。看看這個:https://jsfiddle.net/LB__/sm1f4atq/ – 2015-04-04 04:33:39

+0

關於你的更新:這是'vertical-align'未設置時發生的情況:https://i.imgur.com/lOeRYvA.png – 2015-04-04 04:53:58

+0

這是由於您設置了額外的樣式。線高度,高度等。將其全部刪除。 – DACrosby 2015-04-04 04:57:46

相關問題