2011-03-24 67 views
2

有人可以幫助我在一個div內垂直居中對齊文本,並且一致跨瀏覽器。僅在IE9中,文本距離父div頂部較近一個像素。所有其他瀏覽器按預期呈現文本。標準模式下的文本對齊方式(IE9)

重要:我使用的是標準模式:

<!DOCTYPE html> 

下面是一些例子HTML:

<!DOCTYPE html> 
<div style="width:100px; height:16px; font-size:13px; font-family:Arial; line-height:1.2; background-color:red; color:White; vertical-align:middle"> 
<div style="line-height:16px">XXXXXXXXXX</div></div> 
+0

還嘗試了這個代碼,正如Marc所建議的。 \t \t

\t \t \t XXXXXXXXXX \t \t
Peralta 2011-03-24 19:33:44

+0

更改文檔類型給出了預期的結果,但沒有別的。我不想更改該網站的文檔類型。 – Peralta 2011-03-24 19:37:56

回答

1

你可能想看看下面的例子:

CSS: Standard (dynamic) way to centralize an element in the y-axis

有一些有用的參考,可能仍然適用於IE9。

根據您的代碼:您在多個位置設置行高。嘗試刪除內部div中的line-height:16px屬性,實際上,擺脫內部div,因爲vertical-align只會影響內聯元素。

此外,請確保您的容器高度足夠大以容納文本(1.2 * 13),否則您可能會遇到與不同字體或瀏覽器中不同默認字體大小相關的問題。

可能發生的事情是1.2 * 13 = 15.6,並且取決於瀏覽器如何捨棄浮點數,這可能導致1像素移位。將行高設置爲16px而不是1.2,然後查看是否有效。

第二次嘗試

.outer { 
    background-color: red; 
    color: white; 
    width: 100px; 
    height: auto; 
    padding-top: 0px; 
    font-family: Arial, sans-serf; 
    font-size: 13px; 
    line-height: 5.0; 
} 

適用於:

<div class="outer">XXXXXXXXXX</div> 

如果有的話會解決這個問題,使線高度足夠大,這樣有以上/刻字下面的一些空間。將容器高度設置爲auto,並讓行高控制容器的高度。

+0

在IE9中嘗試上面的代碼,然後在另一個瀏覽器中嘗試。使你所提出的改變對我提出的問題沒有任何影響。我會張貼圖像,但stackoverflow不會讓我。更改文檔類型會給出預期的結果,但沒有別的。我不想更改該網站的文檔類型。 – Peralta 2011-03-24 19:32:26

+0

你在Mac或PC上?文檔類型很好,給你嚴格的模式,所以保持這種方式。你使用任何CSS重置腳本? – 2011-03-24 19:34:53

+0

PC。除了我提供的內容外,頁面上沒有CSS。 – Peralta 2011-03-24 19:38:55

2

派對遲到。但是,最近我遇到了類似的問題。經過一番挖掘,我發現了這篇文章:Sub-pixel Fonts in IE9

我認爲這直接導致了IE9字體垂直對齊問題。不幸的是,似乎沒有解決辦法,因爲這是一個強制選項或由用戶自定義(不太可能發生)。

所以它看起來像唯一的解決辦法是增加行高如前所述。

相關問題