移动端弹窗滚动锁定需同时设置html和body样式并记录恢复scrollY,禁用touchmove须精准作用于非弹窗区域,iOS键盘问题需结合scrollIntoView与延迟回滚,overscroll-behavior仅防弹性穿透。移动端弹窗时页面还在滚动?body 的 overflow 不够用直接设 body { overflow: hidden } 看似能锁住背景,但实际在 iOS Safari 和部分 Android 浏览器里根本无效------滚动惯性、地址栏收起/展开、键盘弹出都会触发底层页面滚动。真正起作用的是对 html 和 body 同时加限制,并配合 position: fixed 重置滚动位置。实操建议:弹窗打开时,先记录当前 scrollY 值:const scrollTop = window.scrollY给 html 加 style="position: fixed; width: 100%; top: -${scrollTop}px",把整个视口"钉住"并回滚到原位置同时设 body { overflow: hidden } 防止键盘唤起后内容上顶关闭弹窗时,恢复 html.style.position 和 body.style.overflow,再调用 window.scrollTo(0, scrollTop)touchmove 事件阻止太粗暴,会干掉所有手势用 event.preventDefault() 拦截 touchmove 是常见做法,但一旦绑定在 document 上,连弹窗内的滑动轮播、下拉刷新、甚至输入框光标拖动都会失效。它不是"锁背景",而是"禁一切触摸滚动"。更安全的做法是只拦截非弹窗区域的滚动:立即学习"前端免费学习笔记(深入)";监听 touchmove 时,检查 event.target 是否在弹窗容器内(比如 event.target.closest('.modal'))不在弹窗内才调用 event.preventDefault()必须搭配 { passive: false } 注册事件,否则 Safari 会忽略 preventDefault别忘了在弹窗关闭时移除该监听,避免内存泄漏iOS 键盘弹出导致背景"闪一下"或自动滚动到顶部这是 iOS WebKit 的经典 Bug:软键盘唤起时,浏览器会尝试把聚焦元素滚动进可视区,结果把被锁住的 html 又强行拖动了。单纯靠 CSS 或 JS 锁定挡不住这个行为。 Fotor AI Image Generator Fotor 平台的 AI 图片生成器
相关推荐
昵称画9 小时前
交接班记录电子化:三班之间的信息不漏“AI国潮设计-小江”10 小时前
【AIGC实战】Python+SDXL批量生成“潮汕英歌舞不倒翁”IP | 角色一致性与多场景融合方案,附完整代码Linux_cy10 小时前
服务器管理工具哪个好用?我用了七八个MoRanzhi120310 小时前
第6篇(下)· 使用 PyQt5 实现 2048 高性能计算版:统一运行控制与跨模式安全交接code tsunami10 小时前
【无标题】缓慢更新10 小时前
审批的加签与会签:多人意见怎么合CodeGL10 小时前
10、Python基础之进程和线程跨境联盟11 小时前
大健康实体如何搭建产品差异化:对比普通营养品与合规跨境膳食补充剂服务模式有想法的py工程师11 小时前
PostgreSQL EXPLAIN中的Cost模型分析(random_page_cost参数):优化器眼中的代价世界与执行计划生成前进的李工11 小时前
飞书企业知识库设计+后端高频八股