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

首頁 > 編程 > JavaScript > 正文

一個用jquery寫的判斷div滾動條到底部的方法【推薦】

2019-11-20 10:11:02
字體:
來源:轉載
供稿:網友

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

我們現在只探討和垂直滾動有關的 scrollTop、scrollHeight 屬性。

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

假設有以下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。

這時,我們很嘆服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>   <meta http-equiv="content-type" content="text/html;charset=utf-8">   <title>下拉滾動條滾到底部了嗎?</title>   <script language="JavaScript" src="jQuery-1.4.2.min.js" mce_src="jquery-1.4.2.min.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語句中,需要用“>=”比較運算符,而沒有水平滾動條的時候,等號“=”就足夠了。大家可以實際測試一下。還可以判斷水平滾動條是否滾動到頭了。

以上這篇一個用jquery寫的判斷div滾動條到底部的方法【推薦】就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湄潭县| 梅河口市| 大名县| 石嘴山市| 额济纳旗| 广元市| 松江区| 淮阳县| 前郭尔| 临泉县| 托克逊县| 定远县| 华亭县| 阿图什市| 中西区| 楚雄市| 班戈县| 周口市| 思茅市| 庆安县| 容城县| 陆川县| 辛集市| 桂林市| 白朗县| 中超| 乌拉特后旗| 祁门县| 广水市| 射洪县| 荣昌县| 邓州市| 瑞安市| 松阳县| 海原县| 武川县| 克东县| 惠东县| 洪江市| 无为县| 樟树市|