1. 程式人生 > >如何讓div中的內容垂直居中

如何讓div中的內容垂直居中

雖然Div佈局已經基本上取代了表格佈局,但表格佈局和Div佈局仍然各有千秋,互有長處。比如表格佈局中的垂直居中就是Div佈局的一大弱項,不過好在千變萬化的CSS可以靈活運用,可以製作出準垂直居中效果,勉強過關。 要讓div中的內容垂直居中,無非有以下幾種方法,等我一一列舉:

一、行高(line-height)法

如果要垂直居中的只有一行或幾個文字,那它的製作最為簡單,只要讓文字的行高和容器的高度相同即可,比如:

p { height:30px; line-height:30px; width:100px; overflow:hidden; }

二、內邊距(padding)法

另一種方法和行高法很相似,它同樣適合一行或幾行文字垂直居中,原理就是利用padding將內容垂直居中,比如:

p { padding:30px; }

三、模擬表格法

模擬表格法其實就是用CSS中對元素的宣告讓塊元素像表格一樣顯示,用到的CSS屬性有display、vertical-align等。 先看下面的Html程式碼:

<div id="box"> <div id="content">居中顯示</div> </div>

參照以上Html程式碼,讓最外面名為box的Div呈表格樣式顯示,然後再讓box中名為content的Div呈單元格顯示,並利用vertical-align:middle讓其垂直居中,這樣就模擬出來和表格一樣的顯示方式,CSS程式碼如下:
#wrap { 
height:400px; 
display:table; 
} 
#content { 
vertical-align:middle; 
display:table-cell; 
border:1px solid #FF0099; 
background:#000; 
width:400px; 
}

但這種方法有一個弊端,由於IE瀏覽器對高度理解會產生錯誤,所以這種方法僅對Firefox有效,對IE無效,既然這樣,我們就需要找出對IE的修正方法,於是有了另外一種方法。

四、定位法

顧名思義,定位法是利用CSS定位屬性position對元素進行定位的方法,也屬於模擬方法,不過它對IE的支援還是不錯的。 它的Html程式碼為:

<div id="box"> <div id="sub"> <div id="content">垂直居中</div> </div> </div>

這段程式碼比上一種方法中多出了一個名為sub的Div,它的作用是用來定位,原理就是:首先讓box出於相對定位,sub相對box出於相對定位,位於box垂直方向的50%,再讓content中的真正內容出於sub垂直方向的-50%,從而製作出content在box中垂直居中的效果,它們的CSS程式碼如下:
#wrap { 
border:1px solid #000; 
background:#F00; 
width:400px; 
height:400px; 
position:relative; 
} 
#subwrap { 
position:absolute; top:50%;
} 
#content {
border:1px solid #000; 
position:relative; 
top:-50%;
color:#FFF;
}