jQuery实现判断滚动条到底部


Posted in Javascript onJune 23, 2015

判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop、clientHeight、scrollHeight。

scrollTop为滚动条在Y轴上的滚动距离。

clientHeight为内容可视区域的高度。

scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。

从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。

废话不多少说,赶紧上代码(兼容不同的浏览器)。

lazyload.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("you are in the bottom!");

}
};

lazyload-jQuery.js

$(window).scroll(function(){
var scrollTop = $(this).scrollTop();

var scrollHeight = $(document).height();

var windowHeight = $(this).height();

if(scrollTop + windowHeight == scrollHeight){


alert("you are in the bottom");

}
});

lazyLoad.html

<!doctype html>
<html lang="en" style="height:900px;">
 <head>
 <meta charset="UTF-8">
 <meta name="Author" content="forever">
 <link rel="stylesheet" href="css/lazyload.css" />
 <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
 <title>lazyLoad</title>
 <script type="text/javascript">
   
  $(function(){
    var $ul=$("#lazyLoadWrap").find("ul");
    $(window).scroll(function(){
        var scrollTop = $(this).scrollTop();
        var scrollHeight = $(document).height();
        var windowHeight = $(this).height();
     if(scrollTop + windowHeight == scrollHeight){
          for(var i=0;i<6;i++){
            $ul.append("<li>Hello</li>");
          }

     }
    });
  });
 </script>
 </head>
 <body>
  <div id="lazyLoadWrap">
    <ul>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li>12</li>
    </ul>
  </div>
 </body>
</html>

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
Sep 26 Javascript
jQuery实现点击标题输入详细信息
Apr 16 Javascript
angularJS结合canvas画图例子
Feb 09 Javascript
jQuery验证插件validate使用方法详解
Sep 13 Javascript
angularjs使用directive实现分页组件的示例
Feb 07 Javascript
Async Validator 异步验证使用说明
Jul 03 Javascript
JavaScript函数中的this四种绑定形式
Aug 15 Javascript
微信小程序实现团购或秒杀批量倒计时
Nov 01 Javascript
详解JS中统计函数执行次数与执行时间
Sep 04 Javascript
详解 微信小程序开发框架(MINA)
May 17 Javascript
基于VUE的v-charts的曲线显示功能
Oct 01 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
Apr 27 Javascript
jQuery实现新消息在网页标题闪烁提示
Jun 23 #Javascript
使用Raygun对Node.js应用进行错误处理的方法
Jun 23 #Javascript
javascript创建函数的20种方式汇总
Jun 23 #Javascript
使用Node.js实现HTTP 206内容分片的教程
Jun 23 #Javascript
jquery.gridrotator实现响应式图片展示画廊效果
Jun 23 #Javascript
使用JavaScript实现旋转的彩圈特效
Jun 23 #Javascript
在Node.js中使用HTTP上传文件的方法
Jun 23 #Javascript
You might like
PHP 5.0对象模型深度探索之对象复制
2008/03/27 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
javascript事件问题
2009/09/05 Javascript
基于jquery的表格排序
2010/09/11 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
js密码强度校验
2015/11/10 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
Python类的基础入门知识
2008/11/24 Python
python基础教程之获取本机ip数据包示例
2014/02/10 Python
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
计算机专业大学生的自我评价
2013/11/14 职场文书
职工代表大会主持词
2014/04/01 职场文书
2014年秘书工作总结
2014/11/25 职场文书
个人德育工作总结
2015/03/05 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书