通過JavaScript使Div居中并隨網(wǎng)頁大小改變而改變
更新時間:2013年06月24日 10:36:57 作者:
自己的頁面太難看了,要居中沒居中,要顏色沒顏色,但是無論是怎么樣都得使登錄的框居中吧,下面與大家分享下通過JavaScript可以簡單的使Div在頁面上居中,隨著網(wǎng)頁大小的改變做出相應(yīng)的改變
在使用Java做后臺的時候,都會做到登錄的頁面,但是自己的頁面太難看了,要居中沒居中,要顏色沒顏色,但是無論是怎么樣都得使登錄的框居中吧!以前的想法是通過CSS+Div使div居中,但是現(xiàn)在的想法變了,通過JavaScript可以簡單的使Div在頁面上居中,隨著網(wǎng)頁大小的改變做出相應(yīng)的改變。而且只要明白了居中的原理輕而易舉的就可以實現(xiàn)了。
先看一下居中的原理吧!
先看一張圖。
從圖中看到了什么?可以看到紅色的框居中了,為什么會居中呢?通過觀察可以發(fā)現(xiàn)紅框的上下的藍(lán)色的間距線是一樣長的,這樣可以確保了垂直居中,紅框的左右的綠色間距線也是一樣長的,這樣可以確保了水平居中。
但是怎么使上下的間距相等呢?左右的間距相等呢?
在看一張圖:
假設(shè)當(dāng)前網(wǎng)頁的高為350px,寬為400px,而紅框的高為150px,寬為200px,我們可以發(fā)現(xiàn)網(wǎng)頁的高減去紅框元素的高得到200px像素,而這200px像素正是上下邊距的總和,上下邊距各得到了100px,同理,左右也是一樣的。
有沒有感覺到什么?
如果我們知道了網(wǎng)頁元素的高或?qū)挘瑴p去元素的高或?qū)?,然后在除?,就得到了上下左右邊距的距離。我們通常給元素的定位是怎么定的呢?不都是通過top和left的坐標(biāo)定的嗎?那么現(xiàn)在紅框的坐標(biāo)是什么呢?
再看一張圖:
紅色框的坐標(biāo)是藍(lán)色的上線100px,和綠色的左線100px,即left和top的值,這兩個值不是算出來的嗎?
可以總結(jié)一個公式:
居中的元素的top =(網(wǎng)頁高 –元素的高)/ 2;
居中的元素的left= (網(wǎng)頁寬 –元素的寬) /2;
轉(zhuǎn)化為JavaScript的語法為:
top = (document.body.clientHeight - element.offsetHeight)/2;
left = (document.body.clientWidth - element.offsetWidth)/2
獲取到top和left的坐標(biāo)不就居中了。
以下是居中的完整代碼:
這里要注意幾個問題,要設(shè)置元素的position的屬性為absolute,即絕對定位,然后添加兩個事件onload和onresize,要加上px的字符串,offsetHeight是獲取元素自身的高,offsetWidth是獲取元素自身的寬,這就是當(dāng)網(wǎng)頁加載時和改變大小時div都會居中。不過這種做法是居中的元素和網(wǎng)頁的居中,如果想要一個元素在另一個元素的內(nèi)部居中的話,原理是一樣的。我們只需要將網(wǎng)頁的寬和高的代碼改為另一個元素的寬和高的代碼就行了。另一個元素的寬和高可以通過獲取到當(dāng)前元素的parent元素的高和寬。這樣也是可以居中的。如果用jquery這個框架,那么代碼就更簡單了。
轉(zhuǎn)載請指明出處。
先看一下居中的原理吧!
先看一張圖。
從圖中看到了什么?可以看到紅色的框居中了,為什么會居中呢?通過觀察可以發(fā)現(xiàn)紅框的上下的藍(lán)色的間距線是一樣長的,這樣可以確保了垂直居中,紅框的左右的綠色間距線也是一樣長的,這樣可以確保了水平居中。
但是怎么使上下的間距相等呢?左右的間距相等呢?
在看一張圖:
假設(shè)當(dāng)前網(wǎng)頁的高為350px,寬為400px,而紅框的高為150px,寬為200px,我們可以發(fā)現(xiàn)網(wǎng)頁的高減去紅框元素的高得到200px像素,而這200px像素正是上下邊距的總和,上下邊距各得到了100px,同理,左右也是一樣的。
有沒有感覺到什么?
如果我們知道了網(wǎng)頁元素的高或?qū)挘瑴p去元素的高或?qū)?,然后在除?,就得到了上下左右邊距的距離。我們通常給元素的定位是怎么定的呢?不都是通過top和left的坐標(biāo)定的嗎?那么現(xiàn)在紅框的坐標(biāo)是什么呢?
再看一張圖:
紅色框的坐標(biāo)是藍(lán)色的上線100px,和綠色的左線100px,即left和top的值,這兩個值不是算出來的嗎?
可以總結(jié)一個公式:
居中的元素的top =(網(wǎng)頁高 –元素的高)/ 2;
居中的元素的left= (網(wǎng)頁寬 –元素的寬) /2;
轉(zhuǎn)化為JavaScript的語法為:
top = (document.body.clientHeight - element.offsetHeight)/2;
left = (document.body.clientWidth - element.offsetWidth)/2
獲取到top和left的坐標(biāo)不就居中了。
以下是居中的完整代碼:
這里要注意幾個問題,要設(shè)置元素的position的屬性為absolute,即絕對定位,然后添加兩個事件onload和onresize,要加上px的字符串,offsetHeight是獲取元素自身的高,offsetWidth是獲取元素自身的寬,這就是當(dāng)網(wǎng)頁加載時和改變大小時div都會居中。不過這種做法是居中的元素和網(wǎng)頁的居中,如果想要一個元素在另一個元素的內(nèi)部居中的話,原理是一樣的。我們只需要將網(wǎng)頁的寬和高的代碼改為另一個元素的寬和高的代碼就行了。另一個元素的寬和高可以通過獲取到當(dāng)前元素的parent元素的高和寬。這樣也是可以居中的。如果用jquery這個框架,那么代碼就更簡單了。
轉(zhuǎn)載請指明出處。
您可能感興趣的文章:
- jquery實現(xiàn)拖拽調(diào)整Div大小
- 純js實現(xiàn)div內(nèi)圖片自適應(yīng)大小(已測試,兼容火狐)
- jquery動態(tài)調(diào)整div大小使其寬度始終為瀏覽器寬度
- js通過八個點 拖動改變div大小的實現(xiàn)方法
- JQuery加載圖片自適應(yīng)固定大小的DIV
- javascript實現(xiàn)div的拖動并調(diào)整大小類似qq空間個性編輯模塊
- js實現(xiàn)的八點拖動修改div大小的代碼
- 利用onresize使得div可以隨著屏幕大小而自適應(yīng)的代碼
- 可拖動可改變大小div的實現(xiàn)代碼
- jQuery拖拽通過八個點改變div大小
相關(guān)文章
mock.js實現(xiàn)模擬生成假數(shù)據(jù)功能示例
這篇文章主要介紹了mock.js實現(xiàn)模擬生成假數(shù)據(jù)功能,結(jié)合實例形式分析了mock.js插件生成模擬數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
基于JS正則表達(dá)式實現(xiàn)模板數(shù)據(jù)動態(tài)渲染(實現(xiàn)思路詳解)
這篇文章主要介紹了基于JS正則表達(dá)式實現(xiàn)模板數(shù)據(jù)動態(tài)渲染 ,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
火狐和ie下獲取javascript 獲取event的方法(推薦)
下面小編就為大家?guī)硪黄鸷蚷e下獲取javascript 獲取event的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11

