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 相关文章推荐
IE6/7/8/9不支持exec的简写方式
May 25 Javascript
php与js的区别是什么
Aug 05 Javascript
使用jQuery和PHP实现类似360功能开关效果
Feb 12 Javascript
jQuery+JSON实现AJAX二级联动实例分析
Dec 18 Javascript
ES6中非常实用的新特性介绍
Mar 10 Javascript
vue.js实例todoList项目
Jul 07 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 Javascript
JS中的函数与对象的创建方式
May 12 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
Jul 16 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
Sep 25 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
Jun 29 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闭包实例解析
2014/09/08 PHP
Yii2如何批量添加数据
2016/05/17 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
原生JS轮播图插件
2017/02/09 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
python实现简易淘宝购物
2019/11/22 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
python爬取抖音视频的实例分析
2021/01/19 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
应付会计岗位职责
2013/12/12 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
体育课课后反思
2014/04/24 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
会议欢迎词
2015/01/23 职场文书
高中生物教学反思
2016/02/20 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
详解Javascript实践中的命令模式
2021/05/05 Javascript
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL