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 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
jQuery 定时局部刷新(setInterval)
Nov 19 Javascript
有关于JS构造函数的重载和工厂方法
Apr 07 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
Jan 26 Javascript
JavaScript中的Math.LN2属性用法详解
Jun 12 Javascript
JS验证邮件地址格式方法小结
Dec 01 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
Oct 14 Javascript
Vue三层嵌套路由的示例代码
May 05 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 Javascript
Openlayers+EasyUI Tree动态实现图层控制
Sep 28 Javascript
Nuxt的动态路由和参数校验操作
Nov 09 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使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
php中使用sftp教程
2015/03/30 PHP
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
javascript的push使用指南
2014/12/05 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
JS Math对象与Math方法实例小结
2019/07/05 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
Python的条件语句与运算符优先级详解
2015/10/13 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
简单了解django索引的相关知识
2019/07/17 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
绩效管理实施方案
2014/03/19 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
工资收入证明
2014/10/07 职场文书
食品药品安全责任书
2015/05/11 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python