判断滚动条到底部的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 CSS菜单功能 改进版
Dec 20 Javascript
JavaScript判断FileUpload控件上传文件类型
Sep 28 Javascript
javascript正则表达式之分组概念与用法实例
Jun 16 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 Javascript
js无法获取到html标签的属性的解决方法
Jul 26 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
Sep 04 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
Dec 07 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
Mar 15 Javascript
vue用addRoutes实现动态路由的示例
Sep 15 Javascript
写给新手同学的vuex快速上手指北小结
Apr 14 Javascript
一行JavaScript代码如何实现瀑布流布局
Dec 11 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
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/11/19 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
js资料prototype 属性
2007/03/13 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
JavaScript事件对象event用法分析
2018/07/27 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
json跨域调用python的方法详解
2017/01/11 Python
详解python中asyncio模块
2018/03/03 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
Python3 读取Word文件方式
2020/02/13 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
python进行参数传递的方法
2020/05/12 Python
道德模范先进事迹
2014/02/14 职场文书
洗发露广告词
2014/03/14 职场文书
2014中考励志标语
2014/06/05 职场文书
超市开店计划书
2014/09/15 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python