判断滚动条到底部的JS代码


Posted in Javascript onNovember 04, 2013

判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop、clientHeight、scrollHeight。

scrollTop为滚动条在Y轴上的滚动距离。

clientHeight为内容可视区域的高度。

scrollHeight为内容可视区域的高度加上溢出(滚动)的距离。

从这个三个属性的介绍就可以看出来,滚动条到底部的条件即为scrollTop + clientHeight == scrollHeight。

废话不多少说,赶紧上代码(兼容不同的浏览器)。

 

//滚动条在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!");

}
};

如果用jquery来实现的话就更简单了,
$(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");

}
});

如果要判断在某一个元素中的滚动条是否到底部,根据类似的思想,将document.body换成特定的元素即可,获取scrollTop和scrollHeight的方式是一样的,但是获取元素可见高度需要用到offsetHeight属性,直接依葫芦画瓢即可。
Javascript 相关文章推荐
javascript 兼容FF的onmouseenter和onmouseleave的代码
Jul 19 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
Nov 12 Javascript
JavaScript将页面表格导出为Excel的具体实现
Dec 27 Javascript
jquery统计输入文字的个数并对其进行判断
Jan 07 Javascript
javascript中加号(+)操作符的一些神奇作用
Jun 06 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
Jan 05 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
Aug 24 Javascript
ES6 新增的创建数组的方法(小结)
Aug 01 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
Sep 03 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
Mar 09 Javascript
React如何创建组件
Jun 27 Javascript
js控制不同的时间段显示不同的css样式的实例代码
Nov 04 #Javascript
js实现瀑布流的一种简单方法实例分享
Nov 04 #Javascript
jquery监听div内容的变化具体实现思路
Nov 04 #Javascript
让新消息在网页标题闪烁提示的jQuery代码
Nov 04 #Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 #Javascript
浅析return false的正确使用
Nov 04 #Javascript
javascript与jquery中跳出循环的区别总结
Nov 04 #Javascript
You might like
php中变量及部分适用方法
2008/03/27 PHP
php 获得汉字拼音首字母的函数
2009/08/01 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
nodeJs实现基于连接池连接mysql的方法示例
2018/02/10 NodeJs
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
vue实现下拉菜单树
2020/10/22 Javascript
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
Python封装原理与实现方法详解
2018/08/28 Python
python事件驱动event实现详解
2018/11/21 Python
python使用thrift教程的方法示例
2019/03/21 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
三个Unix的命令面试题
2015/04/12 面试题
应届生人事助理求职信
2013/11/09 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python