摘要:參考資料首先,網(wǎng)頁大小與瀏覽器窗口大小從來都不是一回事這尼瑪最近才明白,坑所以,要知道以下常網(wǎng)頁的范圍我們在代碼里面設(shè)置的或者腳本,改變的樣式就是網(wǎng)頁范圍下的改變,也就是說,我們設(shè)置的大小是網(wǎng)頁的不是瀏覽器窗口的大小。
參考資料
首先,網(wǎng)頁大小與瀏覽器窗口大小從來都不是一回事?。?!這尼瑪最近才明白,坑~
所以,要知道以下常:
網(wǎng)頁的范圍
我們在代碼里面設(shè)置的CSS或者js腳本,改變的樣式就是網(wǎng)頁范圍下的改變,也就是說,我們設(shè)置的CSS大小是網(wǎng)頁的不是瀏覽器窗口的大小。
瀏覽器窗口
瀏覽器窗口中看到的那部分實(shí)時動態(tài)的網(wǎng)頁面積,又叫做viewport(視口)。
為什么說是實(shí)時動態(tài)的窗口?
比如,我上班時偷偷的新窗口打開淘寶,然后把窗口調(diào)的很小,這樣老大就不會發(fā)覺拉。這樣一來,本來全屏的窗口變成了小窗口,因此瀏覽器的窗口大小也就被改變了。
在不出現(xiàn)各種滾動條的情況下,viewport的大小和網(wǎng)頁的大小是相同的。
獲取網(wǎng)頁的大小的方法1clientHeight和clientWidth屬性。這兩個屬性指元素的內(nèi)容部分再加上padding的所占據(jù)的視覺面積,不包括border和滾動條占用的空間。
獲取body的這兩個屬性,可以得出網(wǎng)頁的大小。
盜個圖說明一下:
再盜個代碼
function getViewport(){ if (document.compatMode == "BackCompat"){ return { width: document.body.clientWidth, height: document.body.clientHeight } } else { return { width: document.documentElement.clientWidth, height: document.documentElement.clientHeight } } }
注意事項(xiàng)
這個函數(shù)必須在頁面加載完成后才能運(yùn)行,否則document對象還沒生成,瀏覽器會報錯。
大多數(shù)情況下,都是document.documentElement.clientWidth返回正確值。但是,在IE6的quirks模式中,document.body.clientWidth返回正確的值,因此函數(shù)中加入了對文檔模式的判斷。
clientWidth和clientHeight都是只讀屬性,不能對它們賦值。
獲取網(wǎng)頁的大小的方法2document對象的scrollHeight和scrollWidth屬性就是網(wǎng)頁的大小,意思就是滾動條滾過的所有長度和寬度。
function getPagearea(){ if (document.compatMode == "BackCompat"){ return { width: Math.max(document.body.scrollWidth, document.body.clientWidth), height: Math.max(document.body.scrollHeight, document.body.clientHeight) } } else { return { width: Math.max(document.documentElement.scrollWidth, document.documentElement.clientWidth), height: Math.max(document.documentElement.scrollHeight, document.documentElement.clientHeight) } } }元素的絕對位置
詳見參考資料里面的函數(shù)
網(wǎng)頁元素的相對位置詳見參考資料里面的函數(shù)
獲取元素位置的快速方法getBoundingClientRect():返回一個對象,其中包含了left、right、top、bottom四個屬性,分別對應(yīng)了該元素的左上角和右下角相對于瀏覽器窗口(viewport)左上角的距離。
var X= this.getBoundingClientRect().left; var Y =this.getBoundingClientRect().top;
再加上滾動距離,就可以得到絕對位置
var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft; var Y =this.getBoundingClientRect().top+document.documentElement.scrollTop;
目前,IE、Firefox 3.0+、Opera 9.5+都支持該方法,而Firefox 2.x、Safari、Chrome、Konqueror不支持。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/115029.html
摘要:參考資料事件代理很久很久以來,總感覺事件發(fā)生與事件代理到之間沒什么鳥區(qū)別。要搞清楚什么是事件代理,就需要先搞清楚什么是代理。,怎么從字面來理解事件代理一詞的含義后文有講。于是,看了事件代理的資料。這一過程被稱為事件冒泡。 參考資料:js-事件代理 很久很久以來,總感覺事件發(fā)生與事件代理到之間沒什么鳥區(qū)別。 最近,又看了一下,感覺區(qū)別其實(shí)真不大!看怎么理解吧。 要搞清楚什么是事件代理,就...
摘要:可見對一個頁面正確渲染很重要。和標(biāo)簽對用于標(biāo)識頁面的頭部區(qū)域,和之間的內(nèi)容都屬于頭部區(qū)域中的內(nèi)容。是一個輔助性標(biāo)簽,對頁面可以進(jìn)行很多方面的特性的設(shè)置。當(dāng)頁面沒有設(shè)置字符集時,瀏覽器會使用默認(rèn)的字符編碼顯示。 showImg(https://segmentfault.com/img/bVbjNkI?w=900&h=383); 往期回顧 在 1.2 節(jié)介紹 HTML 語言時講到:HTML...
摘要:上期回顧在上一節(jié)我們已了解前端開發(fā)是做什么的,現(xiàn)在的問題是,如何才能成為一名合格的前端開發(fā)工程師相信這個問題是大家比較關(guān)心的。 showImg(https://segmentfault.com/img/bVbi9ks?w=900&h=383);上期回顧 在上一節(jié)我們已了解前端開發(fā)是做什么的,現(xiàn)在的問題是,如何才能成為一名合格的前端開發(fā)工程師? 相信這個問題是大家比較關(guān)心的。 前端開發(fā)工...
showImg(https://segmentfault.com/img/remote/1460000018747727?w=900&h=500); 簡介 heading 標(biāo)簽、SEO、無障礙閱讀 ps: 內(nèi)容有點(diǎn)多,本來只想講一個點(diǎn),但是關(guān)聯(lián)性太強(qiáng)了,所以辛苦大家了。 在學(xué)習(xí) HTML 標(biāo)簽的時候,很多教程只告訴你 怎么用 而沒有講清楚 是什么,讓我們一起從 h1 到 h6 開始重新認(rèn)識 HTM...
摘要:標(biāo)簽的個屬性。緩存所有響應(yīng),但并非必須。只為單個用戶緩存,因此不允許任何中繼進(jìn)行緩存。比如說就不允許緩存的響應(yīng)表示當(dāng)前請求開始,該響應(yīng)在多久內(nèi)能被緩存和重用,而不去服務(wù)器重新請求。 meta簡介 網(wǎng)頁元數(shù)據(jù),常用于定義網(wǎng)頁的編碼、說明、關(guān)鍵字、修改日期及其他信息。這些數(shù)據(jù)服務(wù)于瀏覽器、搜索引擎等。 meta 標(biāo)簽的2個屬性name, http-equiv。 。 name 屬性 ...
閱讀 2078·2023-04-25 17:48
閱讀 3589·2021-09-22 15:37
閱讀 2940·2021-09-22 15:36
閱讀 6006·2021-09-22 15:06
閱讀 1644·2019-08-30 15:53
閱讀 1430·2019-08-30 15:52
閱讀 716·2019-08-30 13:48
閱讀 1126·2019-08-30 12:44