移动端弹窗滚动锁定需同时设置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 图片生成器
相关推荐
KaMeidebaby10 分钟前
卡梅德生物技术快报|酵母双杂交 cDNA 文库构建与蛋白互作筛选流程暴躁小师兄数据学院16 分钟前
【AI大数据工程师特训笔记】第02讲:PostgreSQL数据库生态全景沐风___16 分钟前
App 上架之后:如何看数据、获取用户与持续迭代产品暴躁小师兄数据学院18 分钟前
【AI大模型应用开发工程师特训笔记】第04讲(第9章):文件目录操作夜微凉427 分钟前
三、MySQL疯狂打码的少年34 分钟前
CISC vs RISC 对比小新同学^O^39 分钟前
Redis的简单总结暴躁小师兄数据学院40 分钟前
【AI大数据工程师特训笔记】第11讲:正则表达式与正则函数IT龟苓膏1 小时前
MySQL InnoDB 内存结构与性能调优:Buffer Pool、脏页、刷盘、临时表和 filesort 一篇讲清城数派1 小时前
2026年500米分辨率DEM地形数据(全球/全国/分省/分市)