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

  • 苏康码怎么黄码变绿码(苏康码怎么黄码转绿码)

    苏康码怎么黄码变绿码(苏康码怎么黄码转绿码)

  • 两页文档,如何单页显示(两页文档如何删除一页)

    两页文档,如何单页显示(两页文档如何删除一页)

  • 手机2g怎么调回4g(手机2g怎么调回4g网络)

    手机2g怎么调回4g(手机2g怎么调回4g网络)

  • 抖音商务合作什么意思(抖音商务合作什么类型的多)

    抖音商务合作什么意思(抖音商务合作什么类型的多)

  • usb setup什么意思(usb,什么意思)

    usb setup什么意思(usb,什么意思)

  • 华为p40pro扫描功能在哪里(华为p40的扫描文件功能怎么开启?)

    华为p40pro扫描功能在哪里(华为p40的扫描文件功能怎么开启?)

  • 淘宝违规行为多久才能成为健康宝宝(淘宝一般违规行为包括哪些?这些行为每次扣多少分?)

    淘宝违规行为多久才能成为健康宝宝(淘宝一般违规行为包括哪些?这些行为每次扣多少分?)

  • 淘宝退货最多多长时间(淘宝退货最多可以申请几次)

    淘宝退货最多多长时间(淘宝退货最多可以申请几次)

  • 钉钉订正作业老师知道吗(钉钉订正作业老师视角)

    钉钉订正作业老师知道吗(钉钉订正作业老师视角)

  • 为什么键盘打出来的不是对应的(为什么键盘打出来是字母)

    为什么键盘打出来的不是对应的(为什么键盘打出来是字母)

  • 怎么用ps设计漂亮的字体(ps怎么做漂浮效果)

    怎么用ps设计漂亮的字体(ps怎么做漂浮效果)

  • 手机root后怎么还原(手机root后怎么隐藏root)

    手机root后怎么还原(手机root后怎么隐藏root)

  • vivos5怎么设置休眠时间(vivo手机休眠设置在哪里设置)

    vivos5怎么设置休眠时间(vivo手机休眠设置在哪里设置)

  • 手机恢复出厂设置步骤(手机恢复出厂设置了还能找回照片吗)

    手机恢复出厂设置步骤(手机恢复出厂设置了还能找回照片吗)

  • oppoa57有没有按键灯(oppoa57按键怎么设置)

    oppoa57有没有按键灯(oppoa57按键怎么设置)

  • 固定电话怎么充值(固定电话怎么充Q币)

    固定电话怎么充值(固定电话怎么充Q币)

  • 手机指纹键不灵敏怎么办(手机指纹按键失灵了怎么办?)

    手机指纹键不灵敏怎么办(手机指纹按键失灵了怎么办?)

  • 硬盘属于什么存储器(硬盘属于什么存储设备)

    硬盘属于什么存储器(硬盘属于什么存储设备)

  • 换手机不换号微信怎么办(换手机不换号微信需要重新下载吗)

    换手机不换号微信怎么办(换手机不换号微信需要重新下载吗)

  • 韵达快递怎么用手机号查询(韵达快递怎么用手机号码查询)

    韵达快递怎么用手机号查询(韵达快递怎么用手机号码查询)

  • 中国code是多少(中国代码是多少)

    中国code是多少(中国代码是多少)

  • 公众号隐藏内容(公众号 隐藏文章)

    公众号隐藏内容(公众号 隐藏文章)

  • 以圣保罗大教堂为背景的千禧桥,英国伦敦 (© Scott Baldock/Getty Images)(圣保罗大教堂是什么教)

    以圣保罗大教堂为背景的千禧桥,英国伦敦 (© Scott Baldock/Getty Images)(圣保罗大教堂是什么教)

  • 期末未缴税额为负数怎么调整
  • 公司卫生纸是自己带还是公司买
  • 个人所得税核定征收税率是多少
  • 公司每年网络费计入什么会计科目
  • 其他应付款包括哪些内容口诀
  • 非金融企业和金融企业
  • 没有收到房租发票可以摊销吗?
  • 行政单位拨给下属单位经费会计分录
  • 运输企业桥票怎么做会计分录
  • 走逃发票怎么处理
  • 一般纳税人购入货物相关的增值税可以抵扣
  • 汽车违章罚款在哪里缴纳
  • 车辆购置税是否计入固定资产
  • 对于甲供工程,施工方销售额不包括建设方提供的材料款。那么该销售额是否包括设备及动力款?
  • 出让方式取得土地使用权会计处理
  • 预交增值税后如何处理
  • 销售折扣计入增值税销售额的
  • 住房维修基金使用管理办法
  • 预付工程款的会计科目
  • 六大会计科目的关系
  • 分公司是否需要章程
  • 小规模纳税人如何开专票
  • 在建工程产生废料收入的账务处理?
  • 电动汽车的出路在哪里
  • 两个公司发工资违法吗
  • u盘ghost下载
  • 开成品油发票要注意什么?
  • 哪些企业需进行预算管理
  • 周转材料摊销是什么科目
  • 固定资产减值损失属于什么科目
  • codewriter怎么运行
  • 亏损企业所得税汇算清缴怎么做
  • 即征即退进项税转出
  • 行政单位捐赠收入属于什么收入
  • php checkbox使用
  • 怎样创建一个网站
  • 跟日期有关的名字
  • vue3.0 vite
  • input输入框限制最大字数
  • 购买银行承兑汇票怎么做账
  • 权益法下股权投资转让
  • 房地产开发费用最高扣除比例
  • 公司收不到的账款而发不出去怎么办
  • sql批量替换值
  • mysql是自动提交的吗
  • mongodb怎么复制粘贴
  • 什么叫境外所得
  • 现金流量表的本期数是本月数还是本年数
  • 如何访问一台网络上的电脑
  • 金税盘全额抵扣申报表怎么填
  • 融资租赁与按揭的区别
  • 红字发票抵扣联和发票联要给对方吗
  • 扣缴个人所得税报告表
  • 偿债基金作用
  • 法人银行贷款
  • 企业研发费用包括工资支出吗
  • 产品成本计算中最基本的方法是
  • 登记现金日记账收入栏的依据有
  • 公司注销其他应收款余额要交税吗
  • 个人社保代扣业务是什么意思
  • 餐饮行业月末结转成本怎么算
  • 平行结转分步法例题
  • mysql数据库备份与恢复的常用方法有几种
  • 让64位的Windows Server 2008支持蓝牙的方法
  • ubuntu怎么录音
  • vmwares
  • Win10系统如何开启全部权限
  • ubuntu下安装deb文件
  • Mac怎么设置默认视频播放器
  • QuickBooks - QuickBooks是什么进程 有什么用
  • win8小键盘怎么打开
  • linux rsyslogd
  • awk命令详解
  • shell中创建文件
  • js内存泄漏的原因及解决办法
  • dos批处理实例800例
  • 处理判断字符串是否相等
  • javascript例题
  • 做网页的流程与步骤
  • 国家税务总局四川省电子税务局界面
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设