【发布时间】:2018-03-19 14:26:46
【问题描述】:
在长页面上显示弹出窗口时,我需要禁用滚动。
我尝试了 3 种解决方案,但没有一个可以接受。
主体:固定 & 溢出-y:滚动
document.body.style.position = 'fixed';
document.body.style.overflowY = 'scroll';
这可能是一个很好的解决方案,但如果我在已经滚动到页面末尾时触发弹出窗口,页面会滚动回顶部。
捕捉鼠标事件
document.body.addEventListener("mousewheel", (e) => e.preventDefault());
这可行,但我仍然可以单击滚动条并滚动。
禁用滚动条并添加边距
document.body.style.overflow = 'hidden';
document.body.style.marginRight = '1rem';
这并没有添加边距。 (而且我害怕滚动条宽度不同的问题)
编辑:
我正在尝试基于 HostListner 的另一种解决方案
@HostListener('window:scroll', ['$event'])
public handleScroll(event: any) {
console.log(event);
event.preventDefault();
}
它会正确触发但不会阻止滚动...
【问题讨论】:
-
为什么要让滚动条可见...
-
@Bhuwan 因为当它消失时会导致内容跳转
标签: javascript css angular typescript scroll