跳到主要内容

移动端菜单栏问题

最后更新于:

image-20260801082119.avif

问题

 1这里还有个问题,大佬帮我发现的
 2
 3修去吧
 4遮罩层不统一+窗口可叠加
 5
 6不知道是不是你的dom没做好,菜单里的滚动,在移动端交互滑动,有点卡
 7总感觉应该是有什么东西,在一直渲染输出,只要停留足够久,那么就越能发现卡顿[抠鼻]
 8
 9
10不是,我昨天就发了,one有个参数在监控滚动高度,还是在sessionstorage里面,然后还阻止页面滚动
11就是它一直在跑,你只要停留越久,它就一直跑
12事件应该不止一次,应该是事件,又能再起事件,ID:1+2+3+4+5+6+7+8+9,性能杀手
13这个特意玩过,能把浏览器执行到无响应
14
15帮我深度分析并排查下。

回答

遮罩叠加和滚动卡顿的修复已接上,核心如下:

根因

  • 多个浮层各自 lock/unlock,互切时反复 scrollTo
  • 搜索在 PJAX 后 addEventListener 叠加,越用越卡
  • sessionStorage 滚动写入在锁滚动时仍触发(截图里的 geek-scroll 实为旧/误读前缀,现为 teek-scroll:

改动

  1. 新增 body-scroll-lock.js:引用计数锁,互切时只在最后一个浮层关闭时恢复滚动
  2. 快捷菜单 / 移动导航 / 工具栏抽屉 / 搜索 / 互动小站全部接入,打开时先占锁再关兄弟层
  3. scroll-restoration.js:遮罩打开时不写存储;恢复只校准一次;清理 geek-scroll: 等旧 key
  4. 搜索 rebindDomEvents:先 removeadd,避免监听器堆叠
  5. 遮罩统一为全屏 rgba(0,0,0,0.5) + z-index: 998

本地硬刷新后再试:反复开关键菜单/导航/搜索,长时间停留后滑动应明显更稳。需要的话我可以帮你提交。

最新文章

本页导航