圖解js中常用的判斷瀏覽器窗體、用戶屏幕可視區域大小位置的方法


有時我們需要獲得瀏覽器窗口或屏幕的大小、窗口下拉框下拉的距離等數據,對應這些需求,js中提供了不少解決方法,只是數量稍多容易混淆它們各自的意義,下面咱們用圖例來解釋下12個常見對象屬性的作用。

其中有6個常用的瀏覽器窗體屬性(由於offsetWidth/Height在不同瀏覽器下表現有出入,故不在本章討論)

document.documentElement.clientWidth

document.documentElement.clientHeight

document.documentElement.scrollWidth

document.documentElement.scrollHeight

document.body.scrollTop

document.body.scrollLeft

和6個常用的屏幕對象屬性:

window.screen.width

window.screen.height

window.screenTop

window.screenLeft

window.screen.availHeight

window.screen.availWidth

 

先貼下代碼,方便各位先調試看下結果,要注意的地方是務必確保js代碼在頁面加載后才執行(放到最后面就得了),不然會出現body未加載完成則執行js代碼,導致某些屬性返回值為undefined:

 1 <html>
 2 <head>
 3 <meta charset="utf-8">
 4 <title>無標題文檔</title>
 5 <style>
 6 body{
 7     margin:0;
 8 }
 9 </style>
10 
11 
12 </head>
13 <body>
14 <div id="dd" style="width:2000px; height:1800px; margin:0;">
15 嘖嘖,隨便寫點內容唄<br/><br/><br/>嘖嘖,隨便寫點內容唄嘖嘖,隨便寫點內容唄嘖嘖,隨便寫點內容唄<br/><br/><br/>嘖嘖,隨便寫點內容唄<br/><br/><br/>
16 嘖嘖,隨便寫點內容唄<br/><br/><br/>嘖嘖,隨便寫點內容唄嘖嘖,隨便寫點內容唄嘖嘖,隨便寫點內容唄<br/><br/><br/>嘖嘖,隨便寫點內容唄<br/><br/><br/>
17 嘖嘖,隨便寫點內容唄<br/><br/><br/>嘖嘖,隨便寫點內容唄<br/><br/><br/>嘖嘖,隨便寫點內容唄嘖嘖,隨便寫點內容唄嘖嘖,隨便寫點內容唄
18 </div>
19 </body>
20 <script>
21 console.log(document.documentElement.clientWidth+" "+document.documentElement.clientHeight+" "+document.documentElement.scrollWidth+" "
22 +document.documentElement.scrollHeight+" "+document.body.scrollTop+" "+document.body.scrollLeft
23 +" "+window.screen.width+" "+window.screen.height+" "+window.screenTop+" "+window.screenLeft
24 +" "+window.screen.availHeight+" "+window.screen.availWidth
25 );
26 </script>
27 </html>
View Code

 

 

⑴ document.documentElement.clientWidth 和 document.documentElement.clientHeight 是獲取瀏覽器當前窗口視圖區域(也就是說不包括工具欄、滾動條等)的實際寬高(舊的HTML標准是寫作document.body.clientWidth/clientHeight,已過時,建議大家用新標准來描述):

由於IE8-會把這個屬性當作整個文檔的寬度或高度,而JQ的$(window).height()在部分瀏覽器下也會出錯,建議如果要獲取瀏覽器可視區域高度,可以這樣寫:

var win_h = window.innerHeight||document.documentElement.clientHeight;

 

⑵ document.documentElement.scrollWidth 和 document.documentElement.scrollHeight 是整個網頁大大小,包括可視區域和被卷起來的區域,網頁整體就是了(在這例子里我們是設置div寬高分別為2000px和1800px的):

 

⑶ document.body.scrollTop 和 document.body.scrollLeft 是整個網頁的上方或者左邊被卷起來的部分(注意這里中間部分是body而不再是documentElement):

有人問,那我要獲取網頁被卷起來的下部分或者右部分怎么辦?

答案很簡單,比如你要得到網頁被卷起來的下部分,就用整個網頁的高document.documentElement.scrollHeight減去網頁上方被卷起來的部分document.body.scrollTop,再減去當前瀏覽器視圖區域高度document.documentElement.clientHeight即可

 

⑷ window.screen.width 和 window.screen.height 是獲取你整個顯示器屏幕大小的(我的顯示器分辨率為1680*1050):

 

⑸ window.screenTop 和 window.screenLeft 是瀏覽器窗口頂部/左端距離屏幕大小的:

 

⑹ window.screen.availHeight 和 window.screen.availWidth 是用戶屏幕實際工作區(減去任務欄等非工作區模塊大小)的高和寬:

 

OK這12個屬性都介紹完了,其實用的最多的還是前6個跟瀏覽器和網頁密切關聯的屬性,后面幾個屏幕相關的屬性用的比較少吧(比如設置彈出廣告窗口和屏幕頂端的距離什么的),感覺記好前六個就行啦。

收工~周末快樂~!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM