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

  • 微信头像怎么看(微信头像怎么看不见了)

    微信头像怎么看(微信头像怎么看不见了)

  • ios15怎么设置电池百分比(ios15怎么设置电量显示数字)

    ios15怎么设置电池百分比(ios15怎么设置电量显示数字)

  • 微信登不上是什么原因(微信登不上是什么意思)

    微信登不上是什么原因(微信登不上是什么意思)

  • 微信团队怎么取消不了关注(微信团队怎么取消不了)

    微信团队怎么取消不了关注(微信团队怎么取消不了)

  • 苹果手机safari在哪里打开(苹果 safari)

    苹果手机safari在哪里打开(苹果 safari)

  • 手机qq被单删怎么看(手机qq被删了怎么看以前的聊天记录)

    手机qq被单删怎么看(手机qq被删了怎么看以前的聊天记录)

  • 华为nova7se什么时候上市(华为nova7se什么屏幕)

    华为nova7se什么时候上市(华为nova7se什么屏幕)

  • 电脑软件一般存哪个盘(电脑软件一般存多少G)

    电脑软件一般存哪个盘(电脑软件一般存多少G)

  • 华为荣耀畅玩9a怎么截屏(华为荣耀畅玩9A悬浮窗怎么用)

    华为荣耀畅玩9a怎么截屏(华为荣耀畅玩9A悬浮窗怎么用)

  • 荣耀30pro+防水级别(荣耀30pro防水等级多少)

    荣耀30pro+防水级别(荣耀30pro防水等级多少)

  • 电脑有摄像头吗(台式电脑有摄像头吗)

    电脑有摄像头吗(台式电脑有摄像头吗)

  • 苹果xr有分屏功能吗(苹果xr能分屏)

    苹果xr有分屏功能吗(苹果xr能分屏)

  • 怎么把三个视频合成一个视频(怎么把三个视频做成三屏)

    怎么把三个视频合成一个视频(怎么把三个视频做成三屏)

  • pr安装失败的原因(pr安装失败的原因,错误195)

    pr安装失败的原因(pr安装失败的原因,错误195)

  • 微信忙线中是拉黑了吗(微信忙线中是对方挂断了吗)

    微信忙线中是拉黑了吗(微信忙线中是对方挂断了吗)

  • 华为matex屏幕是什么材质

    华为matex屏幕是什么材质

  • 飞行模式会漏接短信吗(飞行模式会漏接电话吗)

    飞行模式会漏接短信吗(飞行模式会漏接电话吗)

  • ios怎么录屏直播(ios录屏直播怎么用)

    ios怎么录屏直播(ios录屏直播怎么用)

  • vivo怎么弄抖音锁屏(vivo手机怎么弄抖音动态壁纸)

    vivo怎么弄抖音锁屏(vivo手机怎么弄抖音动态壁纸)

  • 如何通过抖音号找回密码(如何通过抖音号找到电话号码)

    如何通过抖音号找回密码(如何通过抖音号找到电话号码)

  • 拼多多自动扣费怎么取消(拼多多自动扣费怎么申请退款)

    拼多多自动扣费怎么取消(拼多多自动扣费怎么申请退款)

  • 苹果蓝牙键盘连不上(苹果蓝牙键盘连接失败)

    苹果蓝牙键盘连不上(苹果蓝牙键盘连接失败)

  • 美团砍价怎么生成二维码(美团砍价成功后在哪里看)

    美团砍价怎么生成二维码(美团砍价成功后在哪里看)

  • 对方手机关机怎么定位(对方手机关机怎么强制联系)

    对方手机关机怎么定位(对方手机关机怎么强制联系)

  • 苹果a1530是苹果几代(苹果a1530是什么)

    苹果a1530是苹果几代(苹果a1530是什么)

  • 税控盘白盘和黑盘一样吗
  • 营业外收支的账务处理
  • 发票超过三个月不能开
  • 服务费发票税率1%
  • 小规模纳税人免税销售额是含税还是不含税
  • 政府会计制度固定资产折旧哪个月开始计提
  • 购货发票属于什么科目
  • 外购货物自用会计处理
  • 仓储费和仓储服务费的区别
  • 城市维护建设税是什么意思
  • 公司未开展业务就没有债权债务吗
  • 嵌入式软件产品增值税即征即退
  • 砂石的资源税怎么算
  • 申办企业所得税抵缴带哪些资料?
  • 公司账户转个人账户用途怎么写
  • 金融行业小规模纳税人税率
  • 民办非企业所得税免税政策
  • 折价处置抵押房地产的应当参照什么
  • 利润分配的余额
  • 固定资产清理账户期末有余额吗
  • 房地产销售佣金表格模板
  • 未分配利润清算如何处理
  • 自行研发的专利权计入
  • 如何结转销售收入
  • 注销企业基本户需要先注销一般户吗
  • 工业会计做账的基本流程
  • session.php
  • 借入长期借款的利息
  • 发票开烟酒
  • 银行罚息计入什么会计科目
  • 处置二手固定资产
  • php 调试工具
  • laravel sqlserver
  • 税控抵税
  • deepwiser怎么用
  • thinkphp登录验证
  • 小满内容
  • ulimit设置不生效
  • 电梯维保越来越没搞头了
  • 没有初级会计证可以从事会计工作吗
  • Postgresql ALTER语句常用操作小结
  • mysql中union什么意思
  • 存货资产减值损失借贷方向
  • 年终奖每个月发
  • 外出经营税收缴纳
  • 生育津贴现在可以打个人账户么
  • 个人出租商铺如何报税申报,需要什么资料
  • 无形资产比如
  • 车辆购置税滞纳金上限
  • 成本计算的方法定额法
  • 销售预付卡的账务处理
  • 已经计提工资后怎么做账
  • 酒店客人损坏物品不赔偿怎么报警
  • 进项税额已抵扣又红字冲红税务系统自动冲回吗
  • 营业外支出增加说明了什么
  • 工资代扣工会会费协议
  • 可转债公允价值变动计入
  • 无建账能力的纳税人是什么意思
  • mysql预编译原理
  • sql转换
  • Win10 Mobile 10536预览版用得越久越卡顿是怎么回事?
  • dwm占用内存过高 进程处理
  • ubuntu网页打开很慢
  • win8强制关闭程序
  • win7关机快捷键设置
  • rhel配置网卡文件和图形界面
  • linux scp远程拷贝文件及文件夹
  • 在linux系统中,用来存在系统所需
  • cocos2dx内存管理
  • javascriptz
  • django模块详解
  • android自定义样式
  • 批处理怎么操作
  • javascript中var的作用
  • jQuery插件是什么
  • javascript 接口
  • 如何理解js的面向对象
  • js判断ua
  • 国家税务总局石棉县税务局
  • 电子专票在哪里接收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设