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

  • 怎样有效的推广自己的qq群(怎样有效的推广一款面膜)

    怎样有效的推广自己的qq群(怎样有效的推广一款面膜)

  • 苹果13promax怎么关闭横屏(苹果13promax怎么关机)

    苹果13promax怎么关闭横屏(苹果13promax怎么关机)

  • 苹果猪头特效在哪(苹果猪头特效怎么变声)

    苹果猪头特效在哪(苹果猪头特效怎么变声)

  • 怎样解封拼多多黑户(怎样解封拼多多上的银行卡)

    怎样解封拼多多黑户(怎样解封拼多多上的银行卡)

  • 华为手机怎么把两张图片合成一张(华为手机怎么把旧手机导入新手机)

    华为手机怎么把两张图片合成一张(华为手机怎么把旧手机导入新手机)

  • 探探被禁言别人能发信息给你吗(探探禁言别人能看到吗)

    探探被禁言别人能发信息给你吗(探探禁言别人能看到吗)

  • 为什么有的淘宝订单没有交易快照(为什么有的淘宝店铺买完东西就消失了)

    为什么有的淘宝订单没有交易快照(为什么有的淘宝店铺买完东西就消失了)

  • k20pro屏幕素质(k20pro屏幕ppi)

    k20pro屏幕素质(k20pro屏幕ppi)

  • 华为手机如何获取本机手机号码(华为手机如何获取存储权限)

    华为手机如何获取本机手机号码(华为手机如何获取存储权限)

  • oppo手机的备忘录在哪里打开(oppo手机的备忘录叫什么名字)

    oppo手机的备忘录在哪里打开(oppo手机的备忘录叫什么名字)

  • QQ隐藏会话在哪里找(qq隐藏会话在哪找)

    QQ隐藏会话在哪里找(qq隐藏会话在哪找)

  • 抖音屏蔽一个人对方知道吗(怎么在抖音屏蔽一个人)

    抖音屏蔽一个人对方知道吗(怎么在抖音屏蔽一个人)

  • 电脑键盘字母区失效(电脑键盘字母区字母的排列顺序)

    电脑键盘字母区失效(电脑键盘字母区字母的排列顺序)

  • 微信聊天记录怎么全选复制(微信聊天记录怎么永久删除)

    微信聊天记录怎么全选复制(微信聊天记录怎么永久删除)

  • qq修改实名认证不符合变更条件(王者qq修改实名认证)

    qq修改实名认证不符合变更条件(王者qq修改实名认证)

  • 华为p40pro支持谷歌吗(华为p40支持谷歌服务吗)

    华为p40pro支持谷歌吗(华为p40支持谷歌服务吗)

  • 电脑蓝屏0000007e怎么解决(电脑蓝屏0000003b什么原因)

    电脑蓝屏0000007e怎么解决(电脑蓝屏0000003b什么原因)

  • QQ被冻结咋看举报人(qq冻结看是不是举报)

    QQ被冻结咋看举报人(qq冻结看是不是举报)

  • 微信号被冻结怎么办(微信号被冻结怎么解封)

    微信号被冻结怎么办(微信号被冻结怎么解封)

  • 荣耀v20手机防水吗(荣耀x20防水)

    荣耀v20手机防水吗(荣耀x20防水)

  • 怎么制作生日视频照片(怎么制作生日视频微信)

    怎么制作生日视频照片(怎么制作生日视频微信)

  • 有道词典单词锁屏显示不了(有道词典单词锁屏怎么一直开)

    有道词典单词锁屏显示不了(有道词典单词锁屏怎么一直开)

  • 微信如何换银行卡(微信如何换银行卡绑定)

    微信如何换银行卡(微信如何换银行卡绑定)

  • ezejmnap.exe进程安全吗 ezejmnap是什么进程(et.exe进程占用)

    ezejmnap.exe进程安全吗 ezejmnap是什么进程(et.exe进程占用)

  • 车辆购置税的税率是多少
  • 增值税的纳税人是谁
  • 发票开具与小票的关系是怎样的
  • 油库存油租赁
  • 债权债务互抵怎么做账
  • 流动资金包括哪三种
  • 个税哪种申报方式计税最好
  • 免抵退税申报资料情况表在哪下载
  • 销售收入是不是营业收入
  • 13点专票和13点普票的区别
  • 团建费用会计怎么写记账凭证
  • 建筑工程管理费包括哪些内容
  • 房地产企业取得净地的税收筹划
  • 长期股权投资的初始投资成本
  • 增值税汇总纳税政策文件
  • 货款为现金如何做记账账款凭证?
  • 土地划拨需要缴纳增值税
  • 简易计税项目是所有发票都是普票吗
  • 增值税纳税申报表怎么填
  • 受伤员工补贴
  • 培训费用走账需要交税吗
  • 总部员工调往下属单位
  • 其他应付款在贷方,借方是什么科目
  • 支付境外关联方借款利息需要的
  • Win10时间显示到秒
  • win7文件打开方式选错了如何恢复
  • 银行存款日记账怎么记账
  • 补提去年所得税分录
  • uniapp相关面试题
  • 企业购进废旧厂房税率
  • 企业所得税合理方法包括
  • php目录浏览
  • 原生js实现promise
  • 产品出库单附在什么凭证后面
  • 前端种类
  • easyposer怎么导出
  • php常用加密方式
  • Programming tutorials and source code examples
  • 资产减值损失为什么要调增
  • 车船使用税代征手续费
  • phpcms迁移
  • 织梦怎么用
  • mysql5.5数据库安装教程
  • 小微企业全年营业额不能超过多少
  • 申报企业所得税会计分录怎么写
  • 一般纳税人企业所得税怎么征收
  • 6月工资7月发8月申报
  • 合并报表存货抵消
  • 中小企业会计科目
  • 招待客户对公司的重要性
  • 购进生产免税货物用材料可以抵扣进项税额吗
  • 保函保证金怎么入账
  • 收到政府补贴如何做帐
  • 企业网银年服务费怎么做账
  • 建筑企业包工包料业务的发票开具和涉税处理
  • 培训费属于什么应税项目
  • 对公账户存款利息分录
  • 多做费用有什么好处
  • 如何对会计感兴趣
  • 明细分类账有哪三种
  • windows10已经阻止此软件
  • Win10 Mobile 10581预览版升级界面曝光 上手视频观赏
  • win10预览版21337
  • linuxftp服务器
  • xp系统提升性能
  • win8.1开机慢
  • win7系统c盘占用空间大
  • win10蓝屏故障
  • cocos lua js
  • opengl立体模型
  • percona mongodb
  • JavaScript中的方法名不区分大小写
  • windows批处理官方教程
  • linux中mysql备份shell脚本代码
  • 如何用nodejs搭建服务端
  • 批处理 读文件
  • c#中init
  • 国家税务总局青海省税务局
  • 上海自贸区税务大厅地址
  • 何艳娟出生年月
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设