RELATEED CONSULTING
相關咨詢
選擇下列産品馬上(shàng)在線溝通(tōng)
服務時(shí)間(jiān):9:00-18:00
你(nǐ)可(kě)能遇到了下面的問題
關閉右側工具欄
如何讓DIV水(shuǐ)平和(hé)垂直居中
  • 作(zuò)者:admin
  • 發表時(shí)間(jiān):2013-07-02 14:17:17
  • 來(lái)源:未知

我們在設計(jì)頁面的時(shí)候,經常要把DIV居中顯示,而且是相對頁面窗口水(shuǐ)平和(hé)垂直方向居中顯示,如讓登錄窗口居中顯示。我們傳統解決的辦法是用純CSS來(lái)讓DIV居中。在本文中,我将給大(dà)家(jiā)講述如何用CSS和(hé)jQuery兩種方法讓DIV水(shuǐ)平和(hé)垂直居中。

CSS讓DIV水(shuǐ)平居中

說明(míng),本文中所指的DIV包括HTML頁面中所有(yǒu)的元素。

讓一個(gè)DIV水(shuǐ)平居中,直接用CSS就可(kě)以做(zuò)到。隻要設置了DIV的寬度,然後使用margin設置邊距0 auto,CSS自動算(suàn)出左右邊距,使得(de)DIV居中。

.mydiv{  
    margin:0 auto;  
    width:300px;  
    height:200px;  
}

但(dàn)是如果要使DIV垂直方向也居中,恐怕CSS需要修改了。

CSS實現水(shuǐ)平和(hé)垂直居中

要讓DIV水(shuǐ)平和(hé)垂直居中,必需知道(dào)該DIV得(de)寬度和(hé)高(gāo)度,然後設置位置為(wèi)絕對位置,距離頁面窗口左邊框和(hé)上(shàng)邊框的距離設置為(wèi)50%,這個(gè)50%就是指頁面窗口的寬度和(hé)高(gāo)度的50%,最後将該DIV分别左移和(hé)上(shàng)移,左移和(hé)上(shàng)移的大(dà)小(xiǎo)就是該DIV寬度和(hé)高(gāo)度的一半。

.mydiv{
   width:300px; 
   height:200px; 
   position:absolute; 
   left:50%; 
   top:50%; 
   margin:-100px 0 0 -150px
}

該方法使用普遍,但(dàn)是前提是必需設置DIV的寬度和(hé)高(gāo)度。如果當頁面DIV寬度和(hé)高(gāo)度是動态的,比方說需要彈出一個(gè)DIV層并且要居中顯示,DIV的內(nèi)容是動态的,所以寬度和(hé)高(gāo)度也是動态的,這時(shí)需要用jQuery可(kě)以解決居中。

jQuery實現水(shuǐ)平和(hé)垂直居中

jQuery實現水(shuǐ)平和(hé)垂直居中的原理(lǐ)就是通(tōng)過jQuery設置DIV的CSS,獲取DIV的左、上(shàng)的邊距偏移量,邊距偏移量的算(suàn)法就是用頁面窗口的寬度減去該DIV得(de)寬度,得(de)到的值再除以2即左偏移量,右偏移量算(suàn)法相同。注意DIV的CSS設置要在resize()方法中完成,就是每次改變窗口大(dà)小(xiǎo)時(shí),都要執行(xíng)設置DIV的CSS,代碼如下:

$(window).resize(function(){
	$(".mydiv").css({
		position: "absolute",
		left: ($(window).width() - $(".mydiv").outerWidth())/2,
		top: ($(window).height() - $(".mydiv").outerHeight())/2
	});	   
});

此外在頁面載入時(shí),就需要調用resize()。

$(function(){
	$(window).resize();
});

此方法的好處就是不需要知道(dào)DIV的具體(tǐ)寬度和(hé)高(gāo)度大(dà)小(xiǎo),直接用jQuery就可(kě)以實現水(shuǐ)平和(hé)垂直居中,而且兼容各浏覽器(qì),這個(gè)方法在很(hěn)多(duō)的彈出層效果中應用。