zoukankan      html  css  js  c++  java
  • 如何判断一个元素滚动到了底部

                                

    理解:

    • scrollTop为滚动条在Y轴上的滚动距离。
     
    • clientHeight为内容可视区域的高度。
     
    • scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。
     
    • 从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。
     
    代码如下(兼容不同的浏览器)。

     所以   滚动距离+元素的高=文档的高  才是你到底部的时刻 也就是 scrollTop + clientHeight == scrollHeight。

    js的写法:

    //滚动条在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写法:

    //jquery
    $(window).scroll(function(){
      var scrollTop = $(this).scrollTop();   
      var scrollHeight = $(document).height();
      var windowHeight = $(this).height();
      if(scrollTop + windowHeight == scrollHeight){
        alert("已经到最底部了!");
      }
    });
  • 相关阅读:
    thinkphp3.2v
    ng-select 下拉的两种方式
    angular的时间指令 以及防止闪烁问题
    angularjs中的几种工具方法
    运用正则+replace+substring将一段英语的字母大写 angurlar运用自定义指令filter完成首字母大写
    angularjs bind与model配合双向绑定 表达式方法输出
    ajax跨域问题
    团队作业一
    校外实习报告(四)
    校外实习报告(三)
  • 原文地址:https://www.cnblogs.com/weiyf/p/8718051.html
Copyright © 2011-2022 走看看