位置: 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开启)

  • 已注册登记的机动车有什么情形的
  • 更改开票信息需要多久
  • 小规模纳税人减半征收
  • 收取违约金如何处罚
  • 归集研发费用时怎么计算
  • 销售滞后是什么行为
  • 公司买入股票要交所得税吗?
  • 商业会计主要做什么帐
  • 4s店维修委托书的主要内容
  • 保证金可以抵货款吗
  • 企业偷税漏税行为诉讼有效期限
  • 财税[2016]140号文逐条解读
  • 小规模季度不超过30万元免税会计分录
  • 旅游业是一个怎样的产业
  • 文化事业建设费税收优惠政策2023
  • 企业所得税的账载金额和实际发生额
  • 机械租赁税怎么开
  • 外贸企业申报出口退税商品名称可以改吗
  • 吸收合并企业的情形
  • 当月作废的发票是否需要报税
  • 小规模纳税人销售额超过500万
  • 收到无偿划拨的股权如何入账
  • 稳增长促转型
  • linux环境什么意思
  • php介绍
  • php ini
  • 开机自动连接宽带怎么设置w11
  • PHP:stream_context_create()的用法_Stream函数
  • 自己买材料自己装修
  • php批量导入数据库
  • 小规模拍卖公司怎么开票
  • vue如何使用axios
  • win10日历点不开
  • html用javascript
  • 税控会计分录
  • 工会经费减除项包括哪些
  • 自动结转制造费用生成不了凭证怎么办
  • 文明手语动作
  • 股权处置时点
  • 增值税一般纳税人是什么意思
  • 新会计准则其他收益核算内容
  • 长期待摊费用该怎么记账
  • 销售退款现金流量表
  • 售楼部大楼
  • 农产品收购发票怎么抵扣
  • 暂估入库结转成本
  • 小规模纳税人注册资金要求多少
  • 普通发票作废如何恢复
  • window8开机
  • bios1962错误
  • windows vista升级
  • win8开始在哪里
  • 同一个用户
  • macbookpro如何开启查找我的mac
  • linux的web
  • linux程序死机
  • ghost到一半报错
  • win7注册表详解
  • 如何管理和维护宿舍卫生
  • 怎么降到windows7
  • win8系统如何卸载软件
  • win10怎么看下载的软件
  • 在ubuntu上安装apache
  • win10电源选项
  • unity3d跑酷游戏推荐
  • linux中的shell编程
  • unity做安卓app
  • 常用的八种教学方法
  • node.js适用哪些场景
  • java中主要使用unicode编码方式
  • div怎么求
  • 获取手机信息的渠道
  • python包含指定内容的字符串
  • 欧美 房产税
  • 残疾人保障金税前扣除规定
  • 财税公司销售工作好做么
  • 申报参保时间怎么填
  • 江西省税务局发票查询平台官网
  • 生育保险证明去哪里办
  • 工程增值税率从11%调整到9%
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设