国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

通過JavaScript使Div居中并隨網(wǎng)頁大小改變而改變

2024-05-06 15:48:20
字體:
供稿:網(wǎng)友
自己的頁面太難看了,要居中沒居中,要顏色沒顏色,但是無論是怎么樣都得使登錄的框居中吧,下面與大家分享下通過JavaScript可以簡單的使Div在頁面上居中,隨著網(wǎng)頁大小的改變做出相應(yīng)的改變

在使用Java做后臺(tái)的時(shí)候,都會(huì)做到登錄的頁面,但是自己的頁面太難看了,要居中沒居中,要顏色沒顏色,但是無論是怎么樣都得使登錄的框居中吧!以前的想法是通過CSS+Div使div居中,但是現(xiàn)在的想法變了,通過JavaScript可以簡單的使Div在頁面上居中,隨著網(wǎng)頁大小的改變做出相應(yīng)的改變。而且只要明白了居中的原理輕而易舉的就可以實(shí)現(xiàn)了。
先看一下居中的原理吧!
先看一張圖。

通過JavaScript使Div居中并隨網(wǎng)頁大小改變而改變


從圖中看到了什么?可以看到紅色的框居中了,為什么會(huì)居中呢?通過觀察可以發(fā)現(xiàn)紅框的上下的藍(lán)色的間距線是一樣長的,這樣可以確保了垂直居中,紅框的左右的綠色間距線也是一樣長的,這樣可以確保了水平居中。
但是怎么使上下的間距相等呢?左右的間距相等呢?
在看一張圖:

通過JavaScript使Div居中并隨網(wǎng)頁大小改變而改變


假設(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)是什么呢?
再看一張圖:

通過JavaScript使Div居中并隨網(wǎng)頁大小改變而改變


紅色框的坐標(biāo)是藍(lán)色的上線100px,和綠色的左線100px,即left和top的值,這兩個(gè)值不是算出來的嗎?
可以總結(jié)一個(gè)公式:
居中的元素的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)不就居中了。
以下是居中的完整代碼:
這里要注意幾個(gè)問題,要設(shè)置元素的position的屬性為absolute,即絕對(duì)定位,然后添加兩個(gè)事件onload和onresize,要加上px的字符串,offsetHeight是獲取元素自身的高,offsetWidth是獲取元素自身的寬,這就是當(dāng)網(wǎng)頁加載時(shí)和改變大小時(shí)div都會(huì)居中。不過這種做法是居中的元素和網(wǎng)頁的居中,如果想要一個(gè)元素在另一個(gè)元素的內(nèi)部居中的話,原理是一樣的。我們只需要將網(wǎng)頁的寬和高的代碼改為另一個(gè)元素的寬和高的代碼就行了。另一個(gè)元素的寬和高可以通過獲取到當(dāng)前元素的parent元素的高和寬。這樣也是可以居中的。如果用jquery這個(gè)框架,那么代碼就更簡單了。
轉(zhuǎn)載請(qǐng)指明出處。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 铜川市| 迁西县| 巫溪县| 陆良县| 普宁市| 田阳县| 龙里县| 微山县| 宝山区| 周口市| 淮阳县| 沾益县| 尉犁县| 临夏县| 子长县| 衡阳县| 界首市| 西乡县| 襄汾县| 南江县| 沁水县| 通山县| 繁峙县| 夏邑县| 伊吾县| 西峡县| 邹平县| 梁平县| 民县| 克什克腾旗| 长乐市| 芜湖市| 中超| 合作市| 南陵县| 北流市| 长阳| 淅川县| 昭觉县| 天全县| 广丰县|