JS判斷滾動條到底部


form:http://www.uphtm.com/js/269.html判斷滾動條到底部,需要用到DOM的三個屬性值,即scrollTop、clientHeight、scrollHeight。
 

scrollTop為滾動條在Y軸上的滾動距離。
 

clientHeight為內容可視區域的高度。

scrollHeight為內容可視區域的高度加上溢出(滾動)的距離。

從這個三個屬性的介紹就可以看出來,滾動條到底部的條件即為scrollTop + clientHeight == scrollHeight。

代碼如下(兼容不同的瀏覽器)。

  1. //滾動條在Y軸上的滾動距離
    function getScrollTop(){
      var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;
      if(document.body){
        bodyScrollTop = document.body.scrollTop;
      }
      if(document.documentElement){
        documentScrollTop = document.documentElement.scrollTop;
      }
      scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;
      return scrollTop;
    }
    
    //文檔的總高度
    function getScrollHeight(){
      var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;
      if(document.body){
        bodyScrollHeight = document.body.scrollHeight;
      }
      if(document.documentElement){
        documentScrollHeight = document.documentElement.scrollHeight;
      }
      scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;
      return scrollHeight;
    }
    //瀏覽器視口的高度
    function getWindowHeight(){
      var windowHeight = 0;
      if(document.compatMode == "CSS1Compat"){
        windowHeight = document.documentElement.clientHeight;
      }else{
        windowHeight = document.body.clientHeight;
      }
      return windowHeight;
    }
    window.onscroll = function(){
      if(getScrollTop() + getWindowHeight() == getScrollHeight()){
        alert("已經到最底部了!!");
      }
    };

如果用jquery來實現的話就更簡單了,

  1. $(window).scroll(function(){
  2. var scrollTop = $(this).scrollTop();
  3. var scrollHeight = $(document).height();
  4. var windowHeight = $(this).height();
  5. if(scrollTop + windowHeight == scrollHeight){
  6. alert("已經到最底部了!");
  7. }
  8. });

如果要判斷在某一個元素中的滾動條是否到底部,根據類似的思想,將document.body換成特定的元素即可,獲取scrollTop和scrollHeight的方式是一樣的,但是獲取元素可見高度需要用到offsetHeight屬性,直接依葫蘆畫瓢即可。form:http://www.uphtm.com


免責聲明!

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



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