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操纵Cookie实现购物车程序
Nov 23 Javascript
细说javascript函数从函数的构成开始
Aug 29 Javascript
JQuery实现鼠标移动到图片上显示边框效果
Jan 09 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
Sep 01 Javascript
js/jquery判断浏览器的方法小结
Sep 02 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
Aug 27 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
Jun 02 Javascript
jquery attr()设置和获取属性值实例教程
Sep 25 Javascript
H5手机端多文件上传预览插件
Apr 21 Javascript
jQuery dateRangePicker插件使用方法详解
Jul 28 jQuery
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 Javascript
react 项目中引入图片的几种方式
Jun 02 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
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
JavaScript单元测试ABC
2012/04/12 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
如何使用python代码操作git代码
2020/02/29 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
Python绘制数码晶体管日期
2021/02/19 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
logback如何自定义日志存储
2021/08/30 Java/Android