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 相关文章推荐
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
Apr 11 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
Jul 25 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
JQuery给网页更换皮肤的方法
May 30 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
Apr 25 Javascript
Node.js五大应用性能技巧小结(必须收藏)
Aug 09 Javascript
Windows安装Node.js报错:2503、2502的解决方法
Oct 25 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
详解Angular6.0使用路由步骤(共7步)
Jun 29 Javascript
Vue全局分页组件的实现代码
Aug 10 Javascript
详解vue后台系统登录态管理
Apr 02 Javascript
echarts多条折线图动态分层的实现方法
May 24 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解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
php中rename函数用法分析
2014/11/15 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
Python解析树及树的遍历
2016/02/03 Python
python图书管理系统
2020/04/05 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
一套英文Java笔试题面试题
2016/04/21 面试题
教师档案管理制度
2014/01/23 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
《搭石》教学反思
2014/04/07 职场文书
班主任个人工作反思
2014/04/28 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
文明单位汇报材料
2014/12/24 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
详解OpenCV曝光融合
2022/04/29 Python