3 回答
TA贡献1828条经验 获得超4个赞
抱歉,据我所知,无法取消任何滚动事件。
无论W3和MSDN说:
Cancelable No
Bubbles No
我认为您必须将这个问题留给浏览器作者来解决。Firefox(无论如何,在Linux上为3.5)对我来说似乎都有更好的表现:在您开始使用滚轮时,如果子代已经位于顶端/底端,它只会滚动父代。
TA贡献1868条经验 获得超4个赞
使用简单的CSS属性解决了(对于某些浏览器):
overscroll-behavior
body{
height: 600px;
overflow: auto;
}
section{
width: 50%;
height: 50%;
overflow: auto;
background: lightblue;
overscroll-behavior: none; /* <--- the trick */
}
section::before{
content: '';
height: 200%;
display: block;
}
<section>
<input value='end' />
</section>
只需将样式属性应用到滚动应该“锁定”到的元素上,滚动事件就不会冒泡到任何可能具有滚动的父元素。
与上面相同的演示,但没有技巧:
body{
height: 600px;
overflow: auto;
}
section{
width: 50%;
height: 50%;
overflow: auto;
background: lightblue;
}
section::before{
content: '';
height: 200%;
display: block;
}
<section>
<input value='end' />
</section>
添加回答
举报