2011-11-10 36 views
1

我有一個包含span的div,我希望span垂直和水平地與我的div的中心對齊。在一個div中垂直居中跨度

這裏的小提琴:http://jsfiddle.net/RhNc2/1/

我已經試穿span並在divvertical-alignmargin:auto,但它不工作

編輯:我的div和我的跨度沒有固定的高度,這取決於內容的,我已經把它固定在小提琴只是爲了告訴

+0

可能重複[如何垂直居中一個div裏面?](http://stackoverflow.com/questions/4357315/how-to-vertically-center-a-span-inside-a- div) – mercator

+0

令人驚歎。我只有兩個工作解決方案之一,但我有3個downvotes?去圖:)我試圖刪除它,並得到我的「同伴壓力」徽章。 –

+0

@mercator不確定重複,因爲鏈接中的解決方案提出了一個頂部:50%,在這裏他們告訴評論它不是一個偉大的技術。我做了一些修改。 – GregM

回答

-2

垂直對齊是件棘手的事,我不知道是否有一個嘗試和真實的方式。過去幾年最可靠的技術是使用CSS表格佈局。這種方法唯一的缺點是它可能不適用於過時的瀏覽器。儘管如此,根據我的經驗,這可能是最好的整體解決方案。請參閱下面我舉的例子:

<style type="text/css"> 
    #container {  
     display:table;  
     border-collapse:collapse; 
     height:200px; 
     width:100%; 
     border:1px solid #000; 
    }   
    #layout {  
     display:table-row; 
    }   
    #content {  
     display:table-cell; 
     text-align:center; 
     vertical-align:middle;  
    }   
</style> 

<div id="container">  
    <div id="layout">  
     <div id="content"> 
      Hello world! 
     </div>  
    </div> 
</div> 

這裏有一個的jsfiddle:http://jsfiddle.net/aGKfd/2/

還有另一種技術,但它並不像上述技術的萬無一失。它涉及兩個容器,外部容器的位置設置爲相對,內部設置爲絕對。內膽你可以親近的使用絕對定位,但它需要一些調整,以得到恰到好處:

<style type="text/css"> 
    #vertical{ 
     position:absolute; 
     top:50%;  
     left:0; 
     width:100%; 
     text-align:center; 
    } 
    #container { 
     position:relative; 
     height:200px; 
     border:1px solid #000; 
    } 
</style>   
<div id="container"> 
    <div id="vertical"> 
     Hello world! 
    </div>    
</div> 

這裏有一個的jsfiddle:http://jsfiddle.net/6SWPe/

+0

我沒有讓你失望,但你的第二個例子只垂直居中'#vertical'框的頂部,而不是整個框。 – Ben

+0

-1。前50% - 不是中心。你需要 - margin-top = height/2 – bravedick

+1

所以不要downvote我的解決方案,如果你的解決方案還不完美;) – bravedick

-1

一下添加到div CSS:

display:table-cell; text-align:center 

工作小提琴是在這裏:http://jsfiddle.net/sdoking/DCT85/

CSS:

#myDiv { 
border:1px solid black; 
height:50px; 
width:200px; 
vertical-align:middle; 
display:table-cell; 
text-align:center 
} 

#mySpan { 
width:100%; 
border:thin blue solid 
} 

邊框是爲了清晰:)

+0

這很好,但與某些瀏覽器(例如某些流行版本的IE)不兼容。你可以在這裏看到更多關於垂直居中的內容:http://www.jakpsatweb.cz/css/css-vertical-center-solution.html –

+0

這可以工作,但它不垂直對齊。 –

+0

這是除了他目前的CSS,其中包括垂直對齊:中間已經 - 看到小提琴 – sdo

-3

#myDiv{ 
    border:1px solid black; 
    height:50px; 
    width:200px; 
} 

#mySpan{ 
    display:block; 
    text-align:center; 
    line-height:50px; 
} 

而且的jsfiddle:http://jsfiddle.net/Simo990/RhNc2/9/

編輯:由於您的div和跨度高度取決於內容,我的解決方案將無法正常工作,因爲它需要固定的高度和只有一行文本。只需尋找與position:absolute解決方案。

-3

您也可以將這些樣式應用於包含<div>line-height解決方案假定您只需要一行文本即可居中。

#myDiv{ 
    border:1px solid black; 
    height:50px; 
    width:200px; 
    text-align:center; 
    line-height:50px; 
} 
+1

-1:如果文本超過一行,則行高會中斷。 –

+0

可能只需一行即可 – Ben

+0

這是一個危險的假設。有很多變數可能會影響這個解決方案:分辨率的變化,窗口大小的縮小等等。 –