浅析jquery如何判断滚动条滚到页面底部并执行事件


Posted in Javascript onApril 29, 2016

本文章向码农介绍jquery如何判断滚动条滚到页面底部并执行事件。首先理解三个dom元素,分别是:clientHeight、offsetHeight、scrollTop。

首先理解三个dom元素,分别是:clientHeight、offsetHeight、scrollTop。

clientHeight:这个元素的高度,占用整个空间的高度,所以,如果一个div有滚动条,那个这个高度则是不包括滚动条没显示出来的下面部分的内容。而只是单纯的DIV的高度。

offsetHeight:是指元素内容的高度。依照上面的,那这个高度呢就是DIV内部的高度,包括可见部分及以滚动条下面的不可见部分。

scrollTop:这个是什么呢?他可以理解为滚动条可以滚动的长度。

举例,如果一个DIV高度是400px(即clientHeight为400),而里面的内容是一个很长的列表,内容的高度是1000px(即offsetHeight为1000)。那么,可见部分我们看到400px,1000px的内容中还有600px不可见。而这不可见的部分呢,正是我们通过拉动滚动条才能把这一部分显示出来。你如果滚动条不拉动,此时scrollTop为0,如果你把滚动条拉到底,显示出列表最下面的部分,此时,scrollTop为600。 所以scrollTop的取值区间为[0, 600]。 所以这个600可以理解为滚动条可以滚动的长度。

理解完上面的这个概念之后。要判断是否滚动到底部就很好做了。

首先,我们拉动滚动条,从最上面拉到最下面,变化的是scrollTop的值,而这个值是有一个区间的。
这个区间是: [0, (offsetHeight - clientHeight)]
即,滚动条拉动的整个过程的变化在 0 到 (offsetHeight ? clientHeight) 范围之内。

1、判断滚动条滚动到最底端: scrollTop == (offsetHeight ? clientHeight)
2、在滚动条距离底端50px以内: (offsetHeight ? clientHeight) ? scrollTop <= 50
3、在滚动条距离底端5%以内: scrollTop / (offsetHeight ? clientHeight) >= 0.95

如上。
如果要实现拉到底部自动加载内容。只要注册个滚动条事件:

scrollBottomTest =function(){
   $("#contain").scroll(function(){
     var $this =$(this),
     viewH =$(this).height(),//可见高度
     contentH =$(this).get(0).scrollHeight,//内容高度
     scrollTop =$(this).scrollTop();//滚动高度
    //if(contentH - viewH - scrollTop <= 100) { //到达底部100px时,加载新内容
    if(scrollTop/(contentH -viewH)>=0.95){ //到达底部100px时,加载新内容
    // 这里加载数据..
    }
   });
}

以上这篇浅析jquery如何判断滚动条滚到页面底部并执行事件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Dom操作之兼容技巧分享
Sep 20 Javascript
使用js显示当前时间示例
Mar 02 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
Jun 30 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
Oct 17 Javascript
javascript实现C语言经典程序题
Nov 29 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
May 17 Javascript
微信小程序 for 循环详解
Oct 09 Javascript
Node.js中路径处理模块path详解
Nov 14 Javascript
Angualrjs和bootstrap相结合实现数据表格table
Mar 30 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 Javascript
详解vue-cli脚手架中webpack配置方法
Aug 22 Javascript
js实现全选和全不选功能
Jul 28 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
Apr 29 #Javascript
浅析Javascript中bind()方法的使用与实现
Apr 29 #Javascript
深入剖析JavaScript中的函数currying柯里化
Apr 29 #Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 #Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
Apr 29 #Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
Apr 29 #Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
Apr 29 #Javascript
You might like
PHP项目开发中最常用的自定义函数整理
2010/12/02 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
Javascript this 的一些学习总结
2012/08/31 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
PyQt5实现下载进度条效果
2018/04/19 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
Python画图高斯分布的示例
2019/07/10 Python
Python PIL库图片灰化处理
2020/04/07 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
法律专业求职信
2014/05/24 职场文书
暑期培训班策划方案
2014/08/26 职场文书
感谢信范文大全
2015/01/23 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
三八妇女节寄语
2015/02/27 职场文书
跑吧孩子观后感
2015/06/10 职场文书
单位更名证明
2015/06/18 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python