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

  • 主机与cpu的区别(cpu和主机的区别)

    主机与cpu的区别(cpu和主机的区别)

  • 内存卡能当导航卡用吗(插内存卡的导航可以换别的地图吗)

    内存卡能当导航卡用吗(插内存卡的导航可以换别的地图吗)

  • 长时间不用手机应该怎么保护它(长时间不用手机关机好还是不关)

    长时间不用手机应该怎么保护它(长时间不用手机关机好还是不关)

  • 华为手机出现n图标(华为手机出现NFC)

    华为手机出现n图标(华为手机出现NFC)

  • 苹果耳机单只怎么配对(苹果耳机单只怎么买)

    苹果耳机单只怎么配对(苹果耳机单只怎么买)

  • 路由器上绑电池能提高网速吗(路由器上绑电池有用吗)

    路由器上绑电池能提高网速吗(路由器上绑电池有用吗)

  • 苹果手机4g网络卡顿(苹果手机4G网络怎么调)

    苹果手机4g网络卡顿(苹果手机4G网络怎么调)

  • 苹果手机信任软件会中毒吗(苹果手机信任软件步骤)

    苹果手机信任软件会中毒吗(苹果手机信任软件步骤)

  • 通话音量怎么关掉(通话音量怎么关掉oppo)

    通话音量怎么关掉(通话音量怎么关掉oppo)

  • 语音信箱是被拉黑了吗(语音信箱是被拉黑了吗?对方能收到信息吗)

    语音信箱是被拉黑了吗(语音信箱是被拉黑了吗?对方能收到信息吗)

  • 快充数据线可以用普通充电头吗(快充数据线可以传输数据吗)

    快充数据线可以用普通充电头吗(快充数据线可以传输数据吗)

  • oppo锁屏充电特效教程(oppo锁屏充电特效怎么设置)

    oppo锁屏充电特效教程(oppo锁屏充电特效怎么设置)

  • 华为畅享10plus什么时候出的(华为畅享10plus什么屏幕材质)

    华为畅享10plus什么时候出的(华为畅享10plus什么屏幕材质)

  • 手机一直来验证码短信怎么回事(手机一直来验证信息)

    手机一直来验证码短信怎么回事(手机一直来验证信息)

  • qq等级加速包是干嘛的(qq等级加速包是自动开启加速的吗)

    qq等级加速包是干嘛的(qq等级加速包是自动开启加速的吗)

  • ps显示暂存盘已满怎么办(用ps时显示暂存盘已满怎么处理)

    ps显示暂存盘已满怎么办(用ps时显示暂存盘已满怎么处理)

  • 快手视频直接发朋友圈(快手直接发视频会赚钱吗?)

    快手视频直接发朋友圈(快手直接发视频会赚钱吗?)

  • soul位置共享怎么使用(soul位置共享怎么恢复)

    soul位置共享怎么使用(soul位置共享怎么恢复)

  • 快手粉丝删除怎么恢复(快手把粉丝删除了怎么能找回来)

    快手粉丝删除怎么恢复(快手把粉丝删除了怎么能找回来)

  • 小米8是什么屏幕(小米8是什么屏幕lcd)

    小米8是什么屏幕(小米8是什么屏幕lcd)

  • 企业抖音怎么登录(抖音如何登录企业号)

    企业抖音怎么登录(抖音如何登录企业号)

  • 嗨来电怎么卸载(嗨来电怎么取消设置来电秀)

    嗨来电怎么卸载(嗨来电怎么取消设置来电秀)

  • 人工智能学习——神经网络(matlab+python实现)(人工智能课程心得体会)

    人工智能学习——神经网络(matlab+python实现)(人工智能课程心得体会)

  • vmstat命令  监视系统资源状态

    vmstat命令 监视系统资源状态

  • 企业所得税的征收对象是什么
  • 建筑劳务如何开三个点的发票
  • 超过两年记入错误的主营业务成本怎么调账
  • 特许权使用费收入
  • 增值税减免税申报明细表免税代码和名称
  • 公允价值变动损益增加记哪方
  • 一般纳税人免征教育费附加的文件
  • 小规模纳税人涉税风险
  • 房产评估费会计分录
  • 预缴增值税可以在电子税务局操作吗
  • 科技成果转化奖励
  • 预付款属于什么结算方式
  • 土地使用管理费
  • 6%的增值税专用发票怎么开
  • 怎么确认收到的钱是哪个项目的
  • 增值税实际缴纳总额
  • 差额开票扣除额可以大概数
  • 以前年度加计扣除的税
  • 破产报表日是哪一日
  • 收到汇算清缴退税的现金流量
  • 积分兑换的话费在使用后不再累计消费积分是什么意思
  • 安装服务需要预缴税款吗
  • 年底结账时需要做账吗
  • 拆迁安置房如何写两人名字
  • windows10如何开启自动更新
  • 出口企业免抵退是什么意思
  • 金融业务增值税税率
  • 何为租赁合同
  • 权益法转成本法为什么用账面价值
  • mapbox wms
  • 银行承兑汇票贴现怎么算
  • 今日清明节的下一句是什么
  • 小规模减免的附件有哪些
  • php正则表达式验证网址
  • 猪肉税票怎么开
  • dom常用方法
  • 工资费用核算
  • 暂估入库的金额与发票金额不一样
  • 其他资本公积主要包括
  • 什么叫做印花??
  • 劳务工资缴税标准
  • 厂区道路折旧年限最新规定
  • 免税农产品发票需要勾选吗
  • 保险费计入什么科目
  • 存货成本主要包括
  • 小规模纳税人免税政策
  • 结汇时和月底结转汇兑损益
  • 开发间接费用的折旧包括哪些
  • 工程施工企业外管证怎么办理
  • 转帐支票遗失怎么办
  • 损益类科目如何结转本年利润
  • 工会经费是什么凭证
  • 预收账款为什么不是货币性项目
  • MySQL创建数据库字符集和排序规则
  • xp系统内存不足怎么办
  • 安装solaris11
  • dlg是什么意思中文
  • 控制面板中的添加和删除在哪里
  • xp系统怎么把ie浏览器放到桌面
  • ubuntu系统安装报错
  • linux 网站备份
  • 优化linux系统的方法
  • win10系统怎么刻录光盘?win10刻录光盘详细图文步骤
  • cocos2dx菜鸟教程
  • unity软件设计
  • cocos2dx怎么用
  • js 数组 增加元素
  • 创建自己的app外卖平台
  • css首字母大写
  • javascript的核心语言对象包括
  • dos常用命令与批处理文件
  • python 连接符
  • unity3d基础教程
  • js禁用页面所以输入框
  • 如何在电子税务局变更财务负责人
  • 对超市的建议和意见怎么写简短
  • 重庆电子税务局怎么绑定办税人员
  • 北京市国家税务局发票查询
  • 西安车辆购置税缴纳多少
  • 车辆购置税怎么做账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设