通過JavaScript使Div置中並隨網頁大小改變而改變

來源:互聯網
上載者:User

在使用Java做背景時候,都會做到登入的頁面,但是自己的頁面太難看了,要置中沒置中,要顏色沒顏色,但是無論是怎麼樣都得使登入的框置中吧!以前的想法是通過CSS+Div使div置中,但是現在的想法變了,通過JavaScript可以簡單的使Div在頁面上置中,隨著網頁大小的改變做出相應的改變。而且只要明白了置中的原理輕而易舉就可以實現了。
先看一下置中的原理吧!
先看一張圖。
 
看到了什嗎?可以看到紅色的框置中了,為什麼會置中呢?通過觀察可以發現紅框的上下的藍色的間距線是一樣長的,這樣可以確保了垂直置中,紅框的左右的綠色間距線也是一樣長的,這樣可以確保了水平置中。
但是怎麼使上下的間距相等呢?左右的間距相等呢?
在看一張圖:
 
假設當前網頁的高為350px,寬為400px,而紅框的高為150px,寬為200px,我們可以發現網頁的高減去紅框元素的高得到200px像素,而這200px像素正是上下邊距的總和,上下邊距各得到了100px,同理,左右也是一樣的。
有沒有感覺到什嗎?
如果我們知道了網頁元素的高或寬,減去元素的高或寬,然後在除以2,就得到了上下左右邊距的距離。我們通常給元素的定位是怎麼定的呢?不都是通過top和left的座標定的嗎?那麼現在紅框的座標是什麼呢?
再看一張圖:
 
紅色框的座標是藍色的上線100px,和綠色的左線100px,即left和top的值,這兩個值不是算出來的嗎?
可以總結一個公式:
置中的元素的top =(網頁高 –元素的高)/ 2;
置中的元素的left= (網頁寬 –元素的寬) /2;
轉化為JavaScript的文法為:
top = (document.body.clientHeight - element.offsetHeight)/2;
left = (document.body.clientWidth - element.offsetWidth)/2
擷取到top和left的座標不就置中了。
以下是置中的完整代碼:
這裡要注意幾個問題,要設定元素的position的屬性為absolute,即絕對位置,然後添加兩個事件onload和onresize,要加上px的字串,offsetHeight是擷取元素自身的高,offsetWidth是擷取元素自身的寬,這就是當網頁載入時和改變大小時div都會置中。不過這種做法是置中的元素和網頁的置中,如果想要一個元素在另一個元素的內部置中的話,原理是一樣的。我們只需要將網頁的寬和高的代碼改為另一個元素的寬和高的代碼就行了。另一個元素的寬和高可以通過擷取到當前元素的parent元素的高和寬。這樣也是可以置中的。如果用jquery這個架構,那麼代碼就更簡單了。
轉載請指明出處。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.