浅析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 相关文章推荐
jQuery ui 1.7更新小结
Aug 15 Javascript
jquery EasyUI的formatter格式化函数代码
Jan 12 Javascript
JavaScript中的ArrayBuffer详细介绍
Dec 08 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
Feb 02 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 Javascript
JavaScript组合模式学习要点
Aug 26 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
基于javaScript的this指向总结
Jul 22 Javascript
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 Javascript
解决vue-cli3 使用子目录部署问题
Jul 19 Javascript
Vue插件打包与发布的方法示例
Aug 20 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
Nov 12 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分页类
2015/11/12 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
jQuery 技巧小结
2010/04/02 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
js实现图片轮播效果
2015/12/19 Javascript
Javascript复制实例详解
2016/01/28 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
简单介绍Python中的round()方法
2015/05/15 Python
一百多行python代码实现抢票助手
2018/09/25 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Django  ORM 练习题及答案
2019/07/19 Python
python requests使用socks5的例子
2019/07/25 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
什么是聚集索引和非聚集索引
2012/01/17 面试题
医学专业毕业生个人的求职信
2013/12/04 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
林肯就职演讲稿
2014/05/19 职场文书
大学同学会活动方案
2014/08/20 职场文书
支行行长竞聘报告
2014/11/06 职场文书
小学教师教学随笔
2015/08/14 职场文书
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers