要阻止父
容器
使用鼠标滚轮滚动,可以使用以下代码示例:
HT
ML
:
<div id="parentContainer" style="overflow: auto;">
<div id="childContainer" style="height: 500px;">
<!-- 子控件内容 -->
JavaScript:
var parentContainer = document.getElementById('parentContainer');
var childContainer = document.getElementById('childContainer');
childContainer.addEventListener('mouseenter', function() {
parentContainer.addEventListener('wheel', preventParentScroll, { passive: false });
childContainer.addEventListener('mouseleave', function() {
parentContainer.removeEventListener('wheel', preventParentScroll);
function preventParentScroll(event) {
event.preventDefault();
上面的代码使用了两个事件监听器:当鼠标进入子控件容器时,父容器的鼠标滚轮滚动事件被阻止;当鼠标离开子控件容器时,阻止父容器的滚动事件被移除。
在preventParentScroll
函数中,我们使用event.preventDefault()
来阻止事件的默认行为,从而阻止父容器的滚动。通过将{ passive: false }
传递给addEventListener
,我们确保了事件监听器是非被动的,这样我们才能够阻止默认行为。
请注意,这个解决方法假设父容器是一个滚动容器(如<div>
)并设置了overflow: auto;
。同时,子控件容器的高度应该足够长,以便出现滚动条。