2011-10-27 237 views
1

爲什麼不這項工作(即DIV內容不居中 - 垂直)?:垂直中心一個div

<div style="display: table;"> 
    <div style="vertical-align: middle; display:table-cell; height: 100px; font-size: 11px;"> 
     <a target="_self" runat="server" href="~/daily.aspx"> 
     <img src="images.png" /></a> 
      content in div<br /> 
    </div> 
</div> 

谷歌搜索無處不在了解我怎麼能垂直對齊一個div和它的內容已經失敗。

任何人都可以爲div中的內容提供最好的CSS樣式。

更新 需要說明的是,我需要垂直對齊圖像的文本不僅僅是div。文字是圖像的底部。可能不得不使用花車。

+2

我無法重現您的錯誤:http://jsfiddle.net/QtzRA/ –

+0

這就是我在Google上搜索時所閱讀的內容。它應該有效,但事實並非如此。它是css版本嗎?這與外部div有關嗎?我需要進一步調查。 – Rob

+0

@Rob您正在使用哪種瀏覽器?也適用於我。 – Tetaxa

回答

2

如果你只需要在文本中間對齊文本,這將做到:

<div> 
    <div> 
     <a target="_self" runat="server" href="~/daily.aspx"> 
     <img src="images.png" style="vertical-align: middle;"/></a> 
     content in div<br /> 
    </div> 
</div> 

這裏是一個例子http://jsfiddle.net/Tetaxa/tVQc6/

+0

謝謝!對不起,其他人對我最初的問題沒有正確解釋。不能相信這是多麼簡單。再次感謝。 – Rob

+0

行..當發生這種情況時會發生什麼http://jsfiddle.net/tVQc6/2/ – Rob

+0

好吧,'img'被定位在內聯中,所以行高將被調整爲該行。如果你想讓文本在圖像的邊上突破幾行,你需要將img設置爲絕對或浮動。 – Tetaxa

0

如果您將元素顯示爲表格,爲什麼不使用表格?

據我所知,除非你知道它的高度,否則不可能將內容居中。如果你知道你的高度可以使用這樣的事情:

.container { 
    position: relative; 
} 

.vertical { 
    position: absolute: 
    top: 50%; 
    height: 200px; 
    margin-top: -100px; // This is half the height 
} 
+0

關於使用表格的好處:)但是我討厭使用表格來表達這麼小的東西。我確實有我的例子中定義的高度,但我會嘗試你的例子,看看它是否有效。感謝你的回答。 – Rob

+2

@Rob不要將'

'元素用於非表格數據**,尤其不能用於樣式**。 –

+0

我同意也不會:) – Rob

0

你爲什麼不嘗試使用<table>?還是你想用<div>本身做?

+1

因爲它不是表格數據,所以他不應該使用表格 – robertc

+0

我同意所有人誰建議不使用此示例的表:) – Rob

0

我知道這是一個老問題,

但沒有人嘗試顯示:table/table-cell/table-row代替?這應該沒問題。 (ofcourse不工作在較舊的IE等)

從W3Schoools類型:http://www.w3schools.com/cssref/pr_class_display.asp

這些類型可以設定爲任意的html元素,它應該呈現爲表的一部分(或表本身) 。 這意味着你應該能夠使用div來呈現數據,就好像它在表中一樣。 雖然我還沒有測試過這個,並且上次我使用這個版本是在幾年前。

能元素被顯示爲一個表 表字幕的元素被顯示爲一個表標題 表單元中的元件被顯示爲元件被顯示爲一個表列
一個表格單元格
表列 table-column-group元素顯示爲表列組(如)
table-footer-group該元素顯示爲表格頁腳行組 table-header-group該元素顯示爲表格標題行組
錶行該元素顯示爲錶行 table-row-group元素顯示爲表格行組

+0

您可以稍微擴展一下嗎?試試如何? –

+0

我做過了,但我認爲你不會使用它;) –