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

  • 新手卖家店铺基本的推广技巧(新手卖家店铺基本要求)

    新手卖家店铺基本的推广技巧(新手卖家店铺基本要求)

  • 苹果13pro怎么关闭智能调整图像智能功能(苹果13pro怎么关闭自动更新)

    苹果13pro怎么关闭智能调整图像智能功能(苹果13pro怎么关闭自动更新)

  • 手机上的爱奇艺会员能在电视上用吗(手机上的爱奇艺可以扫码登录吗)

    手机上的爱奇艺会员能在电视上用吗(手机上的爱奇艺可以扫码登录吗)

  • 戴尔电脑怎么强制关机(戴尔电脑怎么强制开机快捷键)

    戴尔电脑怎么强制关机(戴尔电脑怎么强制开机快捷键)

  • qq可以设置自动上下线时间吗(QQ可以设置自动下线吗)

    qq可以设置自动上下线时间吗(QQ可以设置自动下线吗)

  • 抖音投屏之后可以全屏播放吗(抖音投屏之后可以放大吗)

    抖音投屏之后可以全屏播放吗(抖音投屏之后可以放大吗)

  • 苹果相册画笔在哪里(苹果相册里的画笔在哪里)

    苹果相册画笔在哪里(苹果相册里的画笔在哪里)

  • word字体颜色快捷键(word字体颜色快捷键怎么设置)

    word字体颜色快捷键(word字体颜色快捷键怎么设置)

  • 如何设置电脑休眠时间设置(如何设置电脑休眠唤醒方式)

    如何设置电脑休眠时间设置(如何设置电脑休眠唤醒方式)

  • 苹果系统怎么装windows系统(苹果系统怎么装软件)

    苹果系统怎么装windows系统(苹果系统怎么装软件)

  • oppoa92s是闪充吗(oppoa92s是快充吗)

    oppoa92s是闪充吗(oppoa92s是快充吗)

  • 小米9与9CC的区别(小米9和小米9cc有什么区别)

    小米9与9CC的区别(小米9和小米9cc有什么区别)

  • ipv6网络是什么意思(ipv6网络是啥)

    ipv6网络是什么意思(ipv6网络是啥)

  • redmi蓝牙耳机一个响一个不响怎么办(redmi蓝牙耳机断断续续)

    redmi蓝牙耳机一个响一个不响怎么办(redmi蓝牙耳机断断续续)

  • 美团只能开一次会员吗(美团外卖一次只能点一家店的东西么)

    美团只能开一次会员吗(美团外卖一次只能点一家店的东西么)

  • 小米手机横屏竖屏怎么调整(小米手机横屏竖屏设置)

    小米手机横屏竖屏怎么调整(小米手机横屏竖屏设置)

  • 小米永恒模式是什么(小米永恒模式是什么意思)

    小米永恒模式是什么(小米永恒模式是什么意思)

  • 手机短信可以转接吗(手机短信可以转移到另一个手机上吗)

    手机短信可以转接吗(手机短信可以转移到另一个手机上吗)

  • 电脑wps怎么发送到qq(电脑wps怎么发送到qq邮箱里)

    电脑wps怎么发送到qq(电脑wps怎么发送到qq邮箱里)

  • 计算机系统的分类(计算机系统的分层结构的理解)

    计算机系统的分类(计算机系统的分层结构的理解)

  • pr怎么添加字幕轨道(pr怎么添加字幕出场效果)

    pr怎么添加字幕轨道(pr怎么添加字幕出场效果)

  • 拼多多免拼卡怎么用(拼多多免拼卡怎么向好友讨要)

    拼多多免拼卡怎么用(拼多多免拼卡怎么向好友讨要)

  • 华为手机pc模式在哪里(华为手机pc模式能玩游戏吗)

    华为手机pc模式在哪里(华为手机pc模式能玩游戏吗)

  • led显示屏乱码(led显示屏乱码 自动回复正常)

    led显示屏乱码(led显示屏乱码 自动回复正常)

  • p30的返回键在哪(手机返回键怎么调)

    p30的返回键在哪(手机返回键怎么调)

  • qq永久冻怎么恢复(qq永久被冻结怎么找回)

    qq永久冻怎么恢复(qq永久被冻结怎么找回)

  • 花生日记怎么解除支付宝(花生日日记是怎么操作的)

    花生日记怎么解除支付宝(花生日日记是怎么操作的)

  • 电话能接不能打怎么回事(分机电话能接不能打)

    电话能接不能打怎么回事(分机电话能接不能打)

  • speedtest-cli命令  测试服务器外网速度(speedtest教程)

    speedtest-cli命令 测试服务器外网速度(speedtest教程)

  • 实际开票金额和申报金额不符
  • 小区业委会是否可以进行经营活动?
  • 网上认证勾选平台登录不成功
  • 本月缴纳增值税和上个月账本金额不对
  • 统驭科目的作用
  • 待清算商户款项怎么做账
  • 发票可以盖财务章吗?
  • 实收资本印花税是一年一交吗
  • 一般纳税人要交的税种有几种
  • 没有进项发票怎么出口报关
  • 劳务派遣差额征税5%
  • 所得税清算时坏账怎么算
  • 伙食费没有发票可以税前扣除吗
  • 个人所得税app入职时间不对
  • 无形资产有使用期限
  • 贷款买电脑的故事
  • 未抵扣进项税额可以退税吗
  • 用一般户发工资会怎么样
  • 结转利润分配分录怎么写
  • php中apache的配置
  • 年终奖计提和发放
  • 出差的误餐费会计分录
  • dotnetfx35.exe
  • jquery编程
  • 企业所得税中的其他业务收入包括
  • 大雾山国家公园总部加特林堡
  • vue懒加载机构树刷新
  • thinkphp session存放位置
  • 破解版微擎框架如何升级
  • 企业办理工程价款流程
  • 跨年的增值税普通发票怎么冲红
  • 企业接受投资者投资,投资者超额缴入的资本
  • mysql数据类型怎么判断
  • 生产型出口企业的概念
  • 国内旅客运输服务
  • 发票开错对方已抵扣该怎么处理?
  • sql里面union 和union all区别
  • 伤残鉴定中心流程
  • 收据盖发票专用章会被处罚吗
  • 税盘连接服务器失败
  • 农业种植账务处理方法
  • 接受非货币性资产投资入账价值
  • 应收应付款会计分录
  • 先开发票钱后进怎样做帐?
  • 公司给员工转公司
  • 收到货款确认收入还是开好发票确认收入
  • 预收账款的借方余额反映的是
  • 无形资产自行开发
  • 待清算商户款项分录的摘要是什么
  • 股票交易费用计入股票成本吗
  • 小规模升级一般纳税人有什么好处
  • sqlserver日期计算年龄
  • mysql命令行配置
  • 安装office提示
  • Win10 Mobile 10549中Cortana电池消耗很大该怎么办?
  • ubuntu20.04.2安装
  • win8 开机启动
  • 如何优化winxp
  • win7的系统升级win10
  • win7系统网速太慢怎么办
  • win7如何卸载打印机驱动程序
  • win10系统的电脑有哪些
  • perl教程 pdf
  • android怎么ping
  • Android游戏开发打砖块
  • cocos2dx官方教程
  • 关于javascript函数
  • [置顶]公主大人接下来是拷问时间31
  • unity intercom
  • 定时软件有哪些
  • 安卓手机本地
  • 手机关卡类游戏
  • python语言解析
  • settimeout和setinterval在安卓机无效
  • 安卓 触摸屏
  • 企业购置房屋需要交哪些税费
  • 张江税务所地址
  • 坚持问题导向的前提是
  • 现行增值税税率表2023
  • 回迁房办房产证需要交多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设