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 查找新建元素代码
Jul 06 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
Apr 07 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
Sep 28 Javascript
微信小程序支付之c#后台实现方法
Oct 19 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
Jan 22 jQuery
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
Mar 06 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
Apr 12 Javascript
node 文件上传接口的转发的实现
Sep 23 Javascript
layui实现根据table数据判断按钮显示情况的方法
Sep 26 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
Nov 13 Javascript
vue实现购物车列表
Jun 30 Javascript
html5中sharedWorker实现多页面通信的示例代码
May 07 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网页后退不再出现过期
2007/03/08 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
2017/08/10 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
浅析Python中的多重继承
2015/04/28 Python
Python合并字符串的3种方法
2015/05/21 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python多进程并行代码实例
2019/09/30 Python
python实现串口通信的示例代码
2020/02/10 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
厨师长岗位职责
2014/03/02 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
创业计划书之物流运送
2019/09/17 职场文书
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android