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伸缩导航练习示例
Nov 13 Javascript
javascript适合移动端的日期时间拾取器
Nov 10 Javascript
原生js实现水平方向无缝滚动
Jan 10 Javascript
浅谈原生JS实现jQuery的animate()动画示例
Mar 08 Javascript
Vue兼容ie9的问题全面解决方案
Jun 19 Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
Jan 19 Javascript
vue设计一个倒计时秒杀的组件详解
Apr 06 Javascript
js 递归json树实现根据子id查父id的方法分析
Nov 08 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 Javascript
javascript实现随机抽奖功能
Dec 30 Javascript
从源码角度来回答keep-alive组件的缓存原理
Jan 18 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
德生PL990的分析评价
2021/03/02 无线电
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
PHP多进程编程实例
2014/10/15 PHP
PHP生成压缩文件实例
2015/02/07 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
js Dialog 实践分享
2012/10/22 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
Python基于百度AI的文字识别的示例
2018/04/21 Python
python3中的md5加密实例
2018/05/29 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
SQL中where和having的区别
2012/06/17 面试题
采购类个人求职的自我评价
2014/02/18 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
试用期辞职信范文
2015/03/02 职场文书
vue选项卡切换的实现案例
2022/04/11 Vue.js