当前位置: 首页 > news >正文

滚动距离计算

if(targetBox){// 获取滚动容器的视口顶部位置 const containerTop=scrollContainerRef.value.getBoundingClientRect().top // 获取高亮目标框当前相对于视口的的顶部位置 const boxTop=targetBox.getBoundingClientRect().top // 计算出目标框相对于滚动容器内部内容的绝对偏移量 // 当前滚动高度 +(目标框视口Y - 容器视口Y)=目标框在内容区的绝对 Y const absoluteTop=scrollContainerRef.value.scrollTop +(boxTop - containerTop)// 加上视觉留白(比如减去 100px),让高亮块滚动后处于靠上但非紧贴顶部的舒适位置 // 也可以考虑减去视口高度的一半,使其居中:scrollContainerRef.value.clientHeight /2const paddingBefore=120const finalScrollTop=Math.max(0, absoluteTop - paddingBefore)// 执行精准滚动 scrollContainerRef.value.scrollTo({top: finalScrollTop, behavior:'smooth'})}

scrollTop 滚动容器已经滚动了多少距离
boxTop 目标元素相对于浏览器视口顶部的距离
containerTop 滚动容器相对于浏览器视口顶部的距离
boxTop - containerTop 目标元素相对于滚动容器顶部的偏移

scrollTop + (boxTop - containerTop) │
│ = absoluteTop (元素在内容中的绝对位置)
// 假设:
scrollTop = 500 // 已经往下滚了 500px
containerTop = 100 // 容器在视口顶部往下 100px
boxTop = 300 // 目标元素在视口顶部往下 300px

// 计算:
absoluteTop = 500 + (300 - 100)
absoluteTop = 500 + 200
absoluteTop = 700 // 目标元素在整个内容中的位置是 700px

// 滚动到该位置:
scrollContainer.scrollTo({ top: 700, behavior: ‘smooth’ })

(boxTop - containerTop) 算的是"目标在容器内的相对位置",加上 scrollTop 后变成"在整个内容中的绝对位置",这样 scrollTo 才能精准定位到目标元素。

http://www.jsqmd.com/news/1107722/

相关文章:

  • UE4SS终极指南:免费解锁虚幻引擎游戏修改的完整解决方案
  • 如何高效解决B站视频字幕提取难题:使用BiliBiliCCSubtitle的完整方案
  • 如何高效自动化部署Mac Boot Camp驱动:Brigadier专业实战指南
  • 虚幻引擎脚本系统完整指南:从零开始掌握UE4SS的强大功能
  • Zotero-mdnotes:三步告别混乱笔记,让文献管理效率翻倍
  • C语言实现MD5算法:从原理到代码的完整解析
  • IMU与MCU实现6DoF姿态追踪的硬件方案与算法
  • 每天浪费23分钟在无效重构上?用这1个快捷键组合+2个插件配置,实现提取方法零返工
  • IDEA日志断点冲突终极解法(含Log4j2/SLF4J/Jul适配矩阵):20年Java老兵亲测有效的6种组合方案
  • Windows 11优化指南:如何用Win11Debloat一键清理系统臃肿
  • LabVIEW字符串加密实战:从异或到AES-CBC的工程实现
  • 5分钟掌握ImDisk:让Windows凭空“变出“硬盘的神奇工具
  • 【学习记录】Week5(三):PIE 随机化破解——代码段地址泄露与 ret2puts 组合拳
  • 2026 风口洞察:海外短剧 App 与 TK 小程序开发
  • 实时归档,迁移神器|「星盾」手提灾备保险箱发布
  • 【小白也能轻松玩转龙虾】虾壳云一键部署低配置优化,老旧电脑运行 OpenClaw v2.7.9(附最新安装包)
  • 5分钟搞定空洞骑士模组管理的终极方案
  • 零信任安全:数字化时代的企业防护新范式
  • MbedTLS实战:嵌入式AES加解密核心实现与安全通信模块开发
  • 【20年JetBrains生态实战经验】:为什么你抽出来的接口总要返工?5个被忽略的语义一致性检查点
  • 浩辰CAD软件怎么样?
  • QQ音乐解析完全指南:3步掌握无损音乐下载与歌单批量处理
  • Scala、Java、Python、JavaScript 的核心特性和应用场景(Python 的“单机“局限性:GIL 机制导致的多核并行缺陷)
  • NomNom存档编辑器完整指南:No Man‘s Sky终极修改工具终极指南
  • 为什么必火GEO不承诺AI回答排名?
  • 国标视频监控平台架构深度解析:从协议兼容到企业级部署的技术演进
  • 【IDEA Git回滚终极指南】:5种精准回滚场景+3个避坑红线,资深架构师压箱底实战手册
  • UI界面设计新手应该用什么软件?2026入门工具推荐
  • 当B站字幕不再是只读文本:解锁CC字幕的二次创作新姿势
  • 回滚代码总出错?IDEA + Git协同回滚的8个隐藏配置项(官方文档未公开,团队内部培训PPT首次流出)