咱們在設計頁面的時候,常常要把DIV居中顯示,並且是相對頁面窗口水平和垂直方向居中顯示,如讓登陸窗口居中顯示。咱們傳統解決的辦法是用純CSS來讓DIV居中。在本文中,我將給你們講述如何用CSS和jQuery兩種方法讓DIV水平和垂直居中。 CSS讓DIV水平居中 說明,本文中所指的DIV包括HTML頁面中全部的元素。 讓一個DIV水平居中,直接用CSS就能夠作到。只要設置了DIV的寬度,而後使用margin設置邊距0 auto,CSS自動算出左右邊距,使得DIV居中。css
.mydiv{ margin:0 auto; width:300px; height:200px; }
可是若是要使DIV垂直方向也居中,恐怕CSS須要修改了。算法
CSS實現水平和垂直居中 要讓DIV水平和垂直居中,必需知道該DIV得寬度和高度,而後設置位置爲絕對位置,距離頁面窗口左邊框和上邊框的距離設置爲50%,這個50%就是指頁面窗口的寬度和高度的50%,最後將該DIV分別左移和上移,左移和上移的大小就是該DIV寬度和高度的一半。瀏覽器
.mydiv{ width:300px; height:200px; position:absolute; left:50%; top:50%; margin:-100px 0 0 -150px }
該方法使用廣泛,可是前提是必需設置DIV的寬度和高度。若是當頁面DIV寬度和高度是動態的,比方說須要彈出一個DIV層而且要居中顯示,DIV的內容是動態的,因此寬度和高度也是動態的,這時須要用jQuery能夠解決居中。設計
jQuery實現水平和垂直居中 jQuery實現水平和垂直居中的原理就是經過jQuery設置DIV的CSS,獲取DIV的左、上的邊距偏移量,邊距偏移量的算法就是用頁面窗口的寬度減去該DIV得寬度,獲得的值再除以2即左偏移量,右偏移量算法相同。注意DIV的CSS設置要在resize()方法中完成,就是每次改變窗口大小時,都要執行設置DIV的CSS,代碼以下:code
$(window).resize(function(){ $(".mydiv").css({ position: "absolute", left: ($(window).width() - $(".mydiv").outerWidth())/2, top: ($(window).height() - $(".mydiv").outerHeight())/2 }); });
此外在頁面載入時,就須要調用resize()。it
$(function(){ $(window).resize(); });
此方法的好處就是不須要知道DIV的具體寬度和高度大小,直接用jQuery就能夠實現水平和垂直居中,並且兼容各瀏覽器,這個方法在不少的彈出層效果中應用。io