3 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
抱歉,據(jù)我所知,無(wú)法取消任何滾動(dòng)事件。
無(wú)論W3和MSDN說(shuō):
Cancelable No
Bubbles No
我認(rèn)為您必須將這個(gè)問(wèn)題留給瀏覽器作者來(lái)解決。Firefox(無(wú)論如何,在Linux上為3.5)對(duì)我來(lái)說(shuō)似乎都有更好的表現(xiàn):在您開(kāi)始使用滾輪時(shí),如果子代已經(jīng)位于頂端/底端,它只會(huì)滾動(dòng)父代。

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用簡(jiǎn)單的CSS屬性解決了(對(duì)于某些瀏覽器):
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>
只需將樣式屬性應(yīng)用到滾動(dòng)應(yīng)該“鎖定”到的元素上,滾動(dòng)事件就不會(huì)冒泡到任何可能具有滾動(dòng)的父元素。
與上面相同的演示,但沒(méi)有技巧:
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>
添加回答
舉報(bào)