2013-03-04 108 views
1

我的模板中有三行主div。我有一個標題,一個內容包裝器和一個頁腳。標題對齊頂部和頁腳對底部。我在兩者之間有一個內容包裝div。我基本上想要在兩個div中垂直居中內容包裝。內容div始終是動態高度,因此行高度方法對我無效。什麼是我用這個最好的方法?如何垂直對齊頁眉和頁腳div之間的內容div?

+0

相關問題:http://stackoverflow.com/questions/5004665 – 2013-03-04 17:28:48

回答

2

垂直居中內容

在不使用JavaScript,有方式有限數量的垂直居中動態內容:

  1. HTML tables
  2. CSS tables
  3. CSS3 flexbox
  4. CSS3 grids

在這樣的情況下,現代的方法是使用CSS的表,這等同於HTML表格。但是,如果需要支持IE7或更早版本,請改用HTML表格。在這種特殊情況下,Flexbox並不適合,IE9及更早版本不支持。 CSS網格目前僅支持IE10,並且該標準尚未最終確定。

CSS表的基本用法是:

HTML

<div class="table"> 
    <div class="row"> 
     <div class="cell">Content</div> 
    </div> 
</div> 

CSS

.table {display: table;} 
.row {display: table-row;} 
.cell {display: table-cell;} 

演示  (在測試:IE8/9/10, FF,Chrome,Safari,Opera)

HTML表格和CSS表之間進行選擇

對於表格數據(例如,數據的網格),有利於使用HTML表格 。在這種情況下,它在語義上更加正確,並且可以更容易地理解源代碼的性質,這可能有助於訪問和搜索引擎優化(以及代碼的可維護性)。

對於非表格數據(例如,總體佈置),有利於使用CSS表格(如果浮紗和CSS定位是不夠的)。它在語義上更加正確,因爲HTML表格的使用創造了對錶格數據的期望,並且屏幕閱讀器和搜索引擎可能不那麼令人困惑。佈局的具體用途包括垂直居中的內容和等高的列。

CSS表格優於HTML表格的一個特殊優點是支持visibility:collapse,它允許摺疊行或列(某些不能用HTML表格執行的操作)。如果表格數據需要該特定功能,請使用CSS表格。

0

您可以使用下面的代碼做到這一點: -

<div> using display:table-cell; vertical-align:middle 
+0

所有做的是它重新排列我的內容div到左側,它取消了它的寬度。 – ShoeLace1291 2013-03-04 06:11:32

+1

這是不是一個完整的CSS代碼,你必須添加其他的CSS代碼,上述代碼只有證明中心的內容不是其他任何其他 – Chase1986 2013-03-04 06:19:02

+0

@ ShoeLace1291:'display:table-cell'是現代瀏覽器的首選方法。 @ Chase1986:+1用於在正確的方向上操控事物。 – 2013-03-04 17:21:48

0

保存自己的一些痛苦和剛剛突破出來爲三個單獨的容器。

#header { 
    width:1000px; /* or what ever width you need */ 
    margin-left:auto; 
    margin-right:auto; 
    clear:both; 
    overflow:hidden; 
} 
#content{ 
    width:1000px; /* or what ever width you need */ 
    margin-left:auto; 
    margin-right:auto; 
    clear:both; 
    overflow:hidden; 
} 
#footer{ 
    width:1000px; /* or what ever width you need */ 
    margin-left:auto; 
    margin-right:auto; 
    clear:both; 
    overflow:hidden; 
} 

<div id="header">test</div> 
<div id="content">test</div> 
<div id="footer">test</div> 

溢出隱藏屬性將使一個div自動展開,顯示被添加到它的任何額外的內容..使它更像一個表格單元格。

下面是一個例子enter link description here

+0

這涉及水平居中,但問題是垂直居中頁面上的主要內容。 – 2013-03-04 17:24:57

+0

垂直居中div的內容可能會變得棘手,因爲沒有簡單的方法來完成它,就像使用表格單元格一樣。你可以將你的內容包裝在一個子div中,然後使用margin-top。 http://jsfiddle.net/FKnpM/2/ – 2013-03-04 17:48:38

+0

從歷史上來說,是的,但在現代瀏覽器中,CSS表格佈局提供了一種簡單的方法來使用div來完成此操作。請參閱我發佈的附加信息。 – 2013-03-04 17:52:08