iter(g45): modal/drawer/image 打开时锁定背景滚动

This commit is contained in:
HIsheR
2026-10-26 12:02:16 +08:00
parent 7437fed395
commit 0a0dc7a853
5 changed files with 28 additions and 3 deletions
+13
View File
@@ -30,3 +30,16 @@ export function pushOverlay(close: () => void): () => void {
}
};
}
// —— 背景滚动锁:模态弹层(modal/drawer/image 预览)引用计数,全关才解锁 ——
let locks = 0; // 活跃模态层数
/*** 模态层打开时调用,返回解锁函数;嵌套叠加时只由最外层还原 body 内联样式 ***/
export function lockScroll(): () => void {
if (locks === 0) document.body.style.overflow = 'hidden'; // 第一层才锁,避免相互覆盖
locks++;
return () => {
locks--;
if (locks === 0) document.body.style.overflow = ''; // 全关解锁
};
}