浅析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 相关文章推荐
Javascript 运动中Offset的bug解决方案
Dec 24 Javascript
JavaScript设计模式之工厂方法模式介绍
Dec 28 Javascript
JS中捕获console.log()输出的方法
Apr 16 Javascript
简介AngularJS中使用factory和service的方法
Jun 17 Javascript
基于Bootstrap重置输入框内容按钮插件
May 12 Javascript
读Javascript高性能编程重点笔记
Dec 21 Javascript
bootstrap css样式之表单
Jan 19 Javascript
jquery与js实现全选功能的区别
Jun 11 jQuery
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
Jul 20 Javascript
微信小程序实现蒙版弹窗效果
Nov 01 Javascript
vue 返回上一页,页面样式错乱的解决
Nov 14 Javascript
JS Array.from()将伪数组转换成数组的方法示例
Mar 23 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
Python 装饰器使用详解
2017/07/29 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
使用python实现滑动验证码功能
2019/08/05 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
Python中zip函数如何使用
2020/06/04 Python
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
员工自我鉴定范文
2013/10/06 职场文书
大学生入党思想汇报
2014/01/01 职场文书
网络维护中文求职信
2014/01/03 职场文书
小学家长会邀请函
2014/01/23 职场文书
大学新生入学教育方案
2014/05/16 职场文书
商场周年庆活动方案
2014/08/19 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
python - timeit 时间模块
2021/04/06 Python
python百行代码实现汉服圈图片爬取
2021/11/23 Python
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL
redis protocol通信协议及使用详解
2022/07/15 Redis