关于如何捕获具有以下元素的滚动事件的任何见解overflow:hidden
?我想在列中滚动而不向用户显示滚动条。
这其实是一个比较深入的过程。我所做的是当用户鼠标进入和离开要滚动的元素时设置全局标志。然后,在主体的鼠标滚轮事件上,我检查 MOUSE_OVER 标志是否为 true,然后停止该事件的传播。这样,如果整个页面溢出,主体就不会滚动。
请注意,隐藏溢出后,默认的滚动功能将丢失,因此您必须自己创建它。为此,您可以在相关 div 上设置鼠标滚轮侦听器,并使用 event.wheelDelta 属性来检查用户是向上还是向下滚动。该值根据浏览器的不同而不同,但通常向下滚动时为负值,向上滚动时为正值。然后您可以相应地更改 div 的位置。
这段代码很快就被破解了,但它基本上看起来像这样......
var MOUSE_OVER = false;
$('body').bind('mousewheel', function(e){
if(MOUSE_OVER){
if(e.preventDefault) { e.preventDefault(); }
e.returnValue = false;
return false;
}
});
$('#myDiv').mouseenter(function(){ MOUSE_OVER=true; });
$('#myDiv').mouseleave(function(){ MOUSE_OVER=false; });
$('#myDiv').bind('mousewheel', function(e){
var delta = e.wheelDelta;
if(delta > 0){
//go up
}
else{
//go down
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)