javascript - 当鼠标悬停在子元素上时不要滚动主体

标签 javascript

当用户使用以下代码点击页面的两个特定部分的底部时,我试图阻止我的主页滚动,但它根本阻止鼠标滚轮在这些 div 上工作。

 var scroller = document.querySelector('#Filters');

    scroller.addEventListener('wheel', listener);

function listener(event)
    {
        var elem = event.currentTarget;

        if ((event.deltaY < 0 && elem.scrollTop === 0) ||
            (event.deltaY > 0 && elem.offsetHeight + elem.scrollTop >= elem.scrollHeight))
        {
            event.preventDefault();
        }
        else if ((event.deltaX < 0 && elem.scrollLeft === 0) ||
            (event.deltaX > 0 && elem.offsetWidth + elem.scrollLeft >= elem.scrollWidth))
        {
            event.preventDefault();
        }
    }

最佳答案

你可以使用比在js中重新计算滚动更高效的解决方案,在滚动子元素时禁用body滚动。

HTML:

<div onmouseover="disableScroll();" onmouseout="enableScroll();">
    content
</div>

JS:

var body = document.getElementsByTagName('body')[0];
function enableScroll() {
    body.style.overflowY = 'auto';
}
function disableScroll() {
    body.style.overflowY = 'hidden';
}

关于javascript - 当鼠标悬停在子元素上时不要滚动主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39130343/

相关文章:

javascript - 通过标记名称速记获取元素?

javascript - 字符串迭代行为

javascript - 如何刷新主干应用程序中的页面

javascript - 如何列出 npm 用户安装的包

javascript - 带有 Javascript 的表情符号代理字符串。如何解析?

javascript - 在 JavaScript 中将图像十六进制转换为 base64

JavaScript 正则表达式 : find GUID in an URL and replace it

javascript - SpiderMonkey 和 Unicode 转义 : unexpected behavior

JavaScript 函数构造函数解析安全性

javascript - ESLint 的 "consistent return"规则的值(value)主张是什么?