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事件与函数的使用介绍
Sep 29 Javascript
window.location.href的用法(动态输出跳转)
Aug 09 Javascript
JavaScript中的this关键字使用方法总结
Mar 13 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
详解angular2封装material2对话框组件
Mar 03 Javascript
实现jquery放大镜的两种方法
Feb 22 jQuery
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 Javascript
微信小程序实现时间预约功能
Nov 27 Javascript
简单了解node npm cnpm的具体使用方法
Feb 27 Javascript
使用kbone解决Vue项目同时支持小程序问题
Nov 08 Javascript
在Vue中实现随hash改变响应菜单高亮
Mar 09 Javascript
JavaScript setTimeout()基本用法有哪些
Nov 04 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实现读取一个1G的文件大小
2013/08/24 PHP
PHP查询快递信息的方法
2015/03/07 PHP
php基本函数汇总
2015/07/09 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
PHP实现验证码校验功能
2017/11/16 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
python如何使用unittest测试接口
2018/04/04 Python
详解flask入门模板引擎
2018/07/18 Python
python中scikit-learn机器代码实例
2018/08/05 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
postman和python mock测试过程图解
2020/02/22 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
python实现拼接图片
2020/03/23 Python
Python实现手绘图效果实例分享
2020/07/22 Python
Python如何将装饰器定义为类
2020/07/30 Python
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
学雷锋标语
2014/06/25 职场文书
好人好事演讲稿
2014/09/01 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS