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 相关文章推荐
JS模拟多线程
Feb 07 Javascript
IE DOM实现存在的部分问题及解决方法
Jul 25 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
Feb 11 Javascript
基于Jquery实现表单验证
Jul 20 Javascript
详解React中的组件通信问题
Jul 31 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
Aug 19 jQuery
vue轮播图插件vue-awesome-swiper
Nov 27 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
Dec 26 Javascript
Node.js + express基本用法教程
Mar 14 Javascript
微信小程序-form表单提交代码实例
Apr 29 Javascript
详解vue-cli@2.x项目迁移日志
Jun 06 Javascript
前端学习——JavaScript原生实现购物车案例
Mar 31 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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
php获取后台Job管理的实现代码
2011/06/10 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
php 获取本地IP代码
2013/06/23 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
php实现生成验证码实例分享
2016/04/10 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
nodejs多版本管理总结
2018/04/03 NodeJs
浅谈vue 单文件探索
2018/09/05 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
详解Python字典的操作
2019/03/04 Python
anaconda如何查看并管理python环境
2019/07/05 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
Python3的进程和线程你了解吗
2022/03/16 Python
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers