判断滚动条到底部的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 相关文章推荐
JS获取键盘上任意按键的值(实例代码)
Nov 12 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
完美解决JS文件页面加载时的阻塞问题
Dec 18 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
Aug 03 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
Sep 18 Javascript
js中bool值的转换及“&&”、“||”、 “!!”详解
Dec 21 Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 Javascript
Vue.js点击切换按钮改变内容的实例讲解
Aug 22 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
Sep 27 Javascript
JS学习笔记之数组去重实现方法小结
May 29 Javascript
VUE路由动态加载实例代码讲解
Aug 26 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中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
Yii2使用$this->context获取当前的Module、Controller(控制器)、Action等
2017/03/29 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
用js实现放大镜效果
2020/10/28 Javascript
深入理解Python中各种方法的运作原理
2015/06/15 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
Django密码存储策略分析
2020/01/09 Python
Python devel安装失败问题解决方案
2020/06/09 Python
详解Python高阶函数
2020/08/15 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
水务局局长岗位职责
2013/11/28 职场文书
认识深刻的检讨书
2014/02/16 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
匿名检举信范文
2015/03/02 职场文书
河童之夏观后感
2015/06/11 职场文书
盲山观后感
2015/06/11 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS