首页 >web前端 >js教程 >如何在 JavaScript 中暂时禁用滚动而不隐藏滚动条?

如何在 JavaScript 中暂时禁用滚动而不隐藏滚动条?

Barbara Streisand
Barbara Streisand原创
2024-12-21 01:45:10265浏览

How to Temporarily Disable Scrolling in JavaScript without Hiding the Scrollbar?

如何暂时禁用滚动

使用scrollTo jQuery插件时暂时禁用滚动的一种方法是调整“body”的CSS “ 元素。但是,这种方法会隐藏滚动条,这可能并不理想。

更有效的解决方案是阻止特定交互事件触发滚动。这些事件包括:

  • 鼠标滚动
  • 触摸滚动
  • 与滚动相关的按钮

要实现此解决方案,您可以使用以下 JavaScript 代码:

// Disable scrolling
function disableScroll() {
  window.addEventListener('DOMMouseScroll', preventDefault, false); // older FF
  window.addEventListener('wheel', preventDefault, { passive: false }); // modern desktop
  window.addEventListener('touchmove', preventDefault, { passive: false }); // mobile
  window.addEventListener('keydown', preventDefaultForScrollKeys, false);
}

// Enable scrolling
function enableScroll() {
  window.removeEventListener('DOMMouseScroll', preventDefault, false);
  window.removeEventListener('wheel', preventDefault, { passive: false }); 
  window.removeEventListener('touchmove', preventDefault, { passive: false });
  window.removeEventListener('keydown', preventDefaultForScrollKeys, false);
}

此代码在窗口元素上设置事件侦听器以防止触发默认滚动操作。当需要禁用滚动时,调用disableScroll()函数;要重新启用滚动,请调用enableScroll()函数。

此方法允许滚动条保持可见,但阻止其用于滚动。它还适用于多种浏览器。

以上是如何在 JavaScript 中暂时禁用滚动而不隐藏滚动条?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn