位置: IT常识 - 正文

js监听页面或元素scroll事件,滚动到底部或顶部(js监听地址栏)

编辑:rootadmin
js监听页面或元素scroll事件,滚动到底部或顶部

推荐整理分享js监听页面或元素scroll事件,滚动到底部或顶部(js监听地址栏),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js监听url变化方法,js如何监听值的变化,js监听页面元素变化,js监听元素是否在可见区域,js监听http,js监听页面上的所有事件,js监听元素是否在可见区域,js监听页面上的所有事件,内容如对您有帮助,希望把文章链接给更多的朋友!

js监听页面或元素scroll事件,滚动到底部或顶部(js监听地址栏)

基本原理:

1、滚动到底部元素的滚动距离 + 元素的可视距离 == 元素的滚动条总距离2、滚动到顶部元素的滚动距离 == 0

监听页面滚动

<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Scroll Demo</title> </head> <body> <style> .box { height: 5000px; text-align: center; } </style> <div class="box" id="box">打开控制台查看</div> <!-- 引入节流方法 --> <script src="https://cdn.jsdelivr.net/npm/throttle-debounce@5.0.0/umd/index.min.js"></script> <script> // 滚动方向枚举值 const DIRECTION_ENUM = { DOWN: "down", UP: "up", }; // 距离顶部或底部的阈值 const threshold = 20; // 记录前一个滚动位置 let beforeScrollTop = 0; function handleScroll() { // 距顶部 var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; // 可视区高度 var clientHeight = document.documentElement.clientHeight || document.body.clientHeight; // 滚动条总高度 var scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight; // 打印数值 console.table([ { label: "距顶部", value: scrollTop, }, { label: "可视区高度", value: clientHeight, }, { label: "滚动条总高度", value: scrollHeight, }, { label: "距顶部 + 可视区高度", value: scrollTop + clientHeight, }, ]); // 确定滚动方向 let direction = DIRECTION_ENUM.DOWN; if (beforeScrollTop > scrollTop) { direction = DIRECTION_ENUM.UP; } // 通过滚动方向判断是触底还是触顶 if (direction == DIRECTION_ENUM.DOWN) { // 滚动触底 if (scrollTop + clientHeight + threshold >= scrollHeight) { console.log("滚动触底"); } } else { // 滚动到顶部 if (scrollTop <= threshold) { console.log("滚动到顶部"); } } beforeScrollTop = scrollTop; } // 滚动节流 const throttleHandleScroll = throttleDebounce.throttle( 1000, handleScroll ); // 监听滚动 window.addEventListener('scroll', throttleHandleScroll); </script> </body></html>

同理,也可以监听元素的滚动

<style> .box-wrap { height: 500px; overflow-y: auto; } .box { height: 5000px; text-align: center; }</style><div class="box-wrap" id="box"> <div class="box">打开控制台查看</div></div><script> // 监听滚动 let box = document.querySelector("#box"); box.addEventListener("scroll", function (e) { let scrollTop = e.target.scrollTop; let clientHeight = e.target.clientHeight; let scrollHeight = e.target.scrollHeight; // 打印数值 console.table([ { label: "距顶部", value: scrollTop, }, { label: "可视区高度", value: clientHeight, }, { label: "滚动条总高度", value: scrollHeight, }, { label: "距顶部 + 可视区高度", value: scrollTop + clientHeight, }, ]); });</script>

判断触底需要注意的点:

滚动时需要区分向上滚动还是向下滚动滚动时可以设置一个阈值,并非完全触底或触顶才触发滚动事件需要做节流操作,以免短时间内被多次触发

在线Demo

16.1、监听浏览器scroll滚动事件,触顶和触底16.2、监听元素scroll滚动事件,触顶和触底

参考 js 监听页面滚动到底部,监听可视区域滚动到底部

本文链接地址:https://www.jiuchutong.com/zhishi/269781.html 转载请保留说明!

上一篇:windows11怎么显示文件后缀名? win11显示后缀名的两种方法(windows11怎么显示桌面图标)

下一篇:Linux系统中开起和关闭用户的磁盘空间限制的命令(linux开启)

  • 建筑发票开具与土增税扣有什么关系?
  • 中级财务会计计算分析题
  • 营业成本和生产成本的公式
  • 没有收入也可以信用贷
  • 收据盖公章要注意哪些
  • 房地产企业土地使用权入什么科目
  • 火车票增值税申报表怎么填
  • 行政单位会议纪要范文3篇
  • 高新技术企业分类
  • 异地施工如何缴工会经费
  • 库存商品进价成本
  • 多交的增值税怎么退
  • 生产车间的修理计入什么科目
  • 基金申购费有下限吗
  • 确认投资收益是按照出资比例还是股权比例
  • 新版增值税开票软件怎么下载
  • 减免税款是否要结转到未交增值税?
  • 企业固定资产的盘亏净损失
  • 固定资产改良被替换怎么处理
  • 漏记的账务怎么处理
  • 发票金额大于实际支付金额如何报账
  • 承兑汇票公对公多久到账
  • 行政划拨无偿取得的土地使用权属于什么资产
  • 职工福利费支付范围
  • 退还押金的账务处理流程
  • 未开票收入申报后又要开票
  • 怎么通过mac地址访问设备
  • php面向对象优点,缺点
  • macbook 运行windows
  • 保总保安服务有限公司
  • pqtray.exe - pqtray 是什么进程 有什么用
  • 销售产品取得收入4500万元
  • 原始凭证的内容有哪些
  • 固定资产抵账的增值税
  • laravel app接口
  • JavaScript charCodeAt() 方法
  • mkpart命令
  • 垃圾清运费进入会计什么科目
  • 权益法转成本法其他综合收益需要结转吗
  • 电子发票是正规发票吗能报销吗
  • 将织梦dedecms转换到wordpress
  • day12-Servlet02
  • 现金管理的四个方面
  • 老生常谈的近义词
  • 个人所得税专项附加扣除赡养老人
  • 什么是指企业的市场营销活动发生影响的各种因素的总和
  • 企业基金分红具体流程
  • SQL2005Express中导入ACCESS数据库的两种方法
  • 增值税普票税额可以抵扣税吗
  • mysql配置怎么调出来
  • 基本户变更经营范围需要什么材料
  • 出售无形资产和固定资产计入什么科目
  • 摊余成本有什么用
  • 代开发票要带什么资料?
  • 员工缴纳工伤保险怎么赔偿
  • 长期股权投资减值准备
  • 劳务派遣公司主营业务成本是什么
  • 发票勾选认证的时间限制是多久
  • 制造费用结转到哪个科目
  • 发票以外的其他发票
  • 不能抵扣的会计分录
  • 历年案例分析题及答案
  • 会计核算和监督两项基本会计职能是相辅相成
  • 分公司独立核算和非独立核算哪个好
  • 通过SQL语句直接把表导出为XML格式
  • 安装双系统后无法进入原来的系统
  • win7系统关闭防火墙怎么关闭
  • cocos2dx quick lua 学习笔记1
  • unity物体移动速度怎么设置
  • json查询语句
  • xcopy命令拷贝目录
  • linux查看端口占用情况并杀掉进程
  • vue alain
  • unity meshcollider
  • jquery创建map集合
  • 浙江税务客服咨询电话
  • 国家税务总局电话人工客服
  • 北京市印花税减免政策
  • 国税工作人员工资标准
  • 企业需要缴纳哪些费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设