2013-06-05 68 views
0

直播:http://jsfiddle.net/8hAv3/如何使用垂直對齊:中間

#main { 
    width: 100px; 
    height: 100px; 
    background-color: red; 
} 
#sub { 
    width: 100%; 
    height: 100%; 
    background-color: blue; 
    vertical-align: middle; 
} 

<div id="main"> 
    <div id="sub">TEXT</div> 
</div> 

在這個例子中,爲什麼垂直對齊不工作?我怎樣才能做到這一點?我不想使用邊距,填充和設置像素高度。這可能嗎?

+1

可能重複[是否有CSS替代棄用HTML屬性「align」和「valign」?](http://stackoverflow.com/questions/10367387/are-there-css-alternatives-to-the-deprecated-html-attributes-align-and-valign) –

+0

CSS屬性'vertical-align'只能用於內嵌塊元素 - 不在塊上(例如,一個div)或內聯元素。 – kleinfreund

+1

這是一個衆所周知的副本... –

回答

1

這應該工作:

#main { 
    width: 100px; 
    height: 100px; 
    background-color: red; 
    display: table; 
} 
#sub { 
    display: table-cell; 
    height: 100%; 
    width: 100%; 
    background-color: blue; 
    vertical-align: middle; 
} 

http://jsfiddle.net/8hAv3/2/

0

,如果你只是想在一個固定的高度盒垂直居中的文字,我會用line-height:100px

0

你必須使用一個

display:table-row; 
display:table-cell; or 
display:table; 

與垂直對齊風格一起,不知道它必須是確切的顯示值,但它需要是table之一。

+2

如果您不確定如何正確回答問題,請先進行研究,然後再回答。 – kleinfreund

0

您必須給元素#sub一個行高,否則瀏覽器不知道垂直對齊的高度。

0

只要給DIV一個line-height

#main { 
    width: 100px; 
    height: 100px; 
    background-color: red; 
} 
#sub { 
    width: 100%; 
    height: 100%; 
    background-color: blue; 
    line-height:100px; 
} 

Fiddle

此解決方案不使用display:tabledisplay:table-celldisplay:tabledisplay:table-cell不是瀏覽器友好的,一些較舊的瀏覽器不支持的