clientWidth,clientHeight,offsetWidth,offsetHeigh含義

網頁可見區域寬:document.body.clientWidth; javascript

網頁可見區域高:document.body.clientHeight; html

網頁可見區域寬:document.body.offsetWidth;(包括邊線的寬)java

網頁可見區域高:document.body.offsetHeight;(包括邊線的寬)jquery

網頁正文全文寬:document.body.scrollWidth; 程序員

網頁正文全文高:document.body.scrollHeight; 編程

網頁被捲去的高:document.body.scrollTop; 瀏覽器

網頁被捲去的左:document.body.scrollLeft; 測試

網頁正文部分上:window.screenTop; this

網頁正文部分左:window.screenLeft; 編碼

屏幕分辨率的寬:window.screen.width; 

屏幕分辨率的高:window.screen.height; 

屏幕可用工做區寬度:window.screen.availWidth; 

屏幕可用工做區高度:window.screen.availHeight;

 

有時會出現取不到值的狀況,是由於個人HTML文件頭部加了文檔類型。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

或者

<!DOCTYPE html>


解決辦法:

1.去掉頭部文檔類型。(不推薦此方法)

2.把document.body.scrollTop和document.body.scrollLeft這兩個傢伙改個名字,改爲:document.documentElement.scrollTop 和document.documentElement.scrollLeft。固然document.body.clientWidth和document.body.clientHeight也要更名字了,改成:document.documentElement.clientWidth和document.documentElement.clientHeight

scroll:

 jQuery 裏和滾動條有關的概念不少,可是有三個屬性和滾動條的拖動有關,就是:scrollTop、scrollLeft、scrollHeight。其中 scrollHeight 屬性,互聯網上幾乎搜素不到關於它的應用技巧,而我正好須要用到它。

    咱們如今只探討和垂直滾動有關的 scrollTop、scrollHeight 屬性。

    1、滾動條有關屬性的正確理解:

    假設有如下Html代碼:

<div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
      <div style="height:750px;">
      </div></div>

 

     因爲內部的div標籤高度比外部的長,而且外部的div容許自動出現垂直滾動條,因此用瀏覽器打開後,能夠看到垂直滾動條。滾動條向下拖動一段距離,看到的頁面效果以下(右部的a、b是我抓圖後,用PS標出來的):

    

    那麼,這裏的外部div 的scrollTop、scrollHeight 屬性究竟是什麼呢?
    有人說,scrollTop等於圖中標出的a。scrollHeight 等於外部div的高度500px。其實,都不對。
    其實,圖中標出的a、b,對咱們編程寫js代碼沒有任何具體意義,它僅僅具備象徵意義。
    實際上,在js代碼裏,滾動條是被抽象爲一個「點」來對待的。scrollHeight其實不是「滾動條的高度」(b),而是表示滾動條須要滾動的高度,即內部div的高度750px。而scrollTop表示滾動條(一個點)當前的位置在750px裏佔了多少,不是圖中標出的a,因此scrollTop表示這個點(滾動條就是一個點)的位置,而scrollHeight表示這個點須要走的所有路程.

    這時,咱們很歎服Windows的設計者,滾動條設計的如此形象美妙,欺騙了多少頭腦簡單的鼠標操做員。a和b的距離分別標識滾動條滾動了和須要滾動的距離,它們之間分別有一個對應的關係,但這些不是咱們這些開發應用程序的程序員考慮的,是設計操做系統GUI圖形接口的程序員考慮的。

2判斷垂直滾動條是否到達底部
    弄明白了以上的概念,編碼其實就比較簡單了, 如下是示例代碼:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>下拉滾動條滾到底部了嗎?</title>
      <script language="javascript" src="jquery-1.10.2.js"></script>
      <script language="javascript">
          $(document).ready(function (){        
                var nScrollHight = 0; //滾動距離總長(注意不是滾動條的長度)
                var nScrollTop = 0;   //滾動到的當前位置
                var nDivHight = $("#div1").height();

                $("#div1").scroll(function(){
                nScrollHight = $(this)[0].scrollHeight;
                nScrollTop = $(this)[0].scrollTop;          
                if(nScrollTop + nDivHight >= nScrollHight)
                    alert("滾動條到底部了");
              });
          });      
      </script>
    <body>
    <div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
    <div style="background-color:#ccc; height:750px;">IE 和 FF 下測試經過</div>
    </div>
    </body>
    </html>

    代碼解說:    內部div高度爲750,外部div高度爲500,因此垂直滾動條須要滾動750-500=250的距離,就會到達底部,參見語句nScrollTop + nDivHight >= nScrollHight。    程序中,在外部div的scroll(滾動)事件中偵測和執行if判斷語句,是很是消耗CPU資源的。用鼠標拖拉滾動條,只要有一個像素的變更就會觸發該事件。但點擊滾動條兩頭的箭頭,事件觸發的頻率會低得多。因此滾動條的scroll事件要謹慎使用。    本示例判斷的是沒有水平滾動條的狀況,在有水平滾動條時,狀況會有細小的變化,因此nScrollTop + nDivHight >= nScrollHight語句中,須要用「>=」比較運算符,而沒有水平滾動條的時候,等號「=」就足夠了。你們能夠實際測試一下。還能夠判斷水平滾動條是否滾動到頭了。

相關文章
相關標籤/搜索