Javascript “我如何检测?”;鼠标滚轮滚动“;及;窗口手动滚动;两者在Jquery中都不同
我正在做一个项目,当用户使用鼠标滚轮滚动和窗口滚动时,我想做一些动作(通过滚动右侧的滚动条)Javascript “我如何检测?”;鼠标滚轮滚动“;及;窗口手动滚动;两者在Jquery中都不同,javascript,jquery,html,css,scroll,Javascript,Jquery,Html,Css,Scroll,我正在做一个项目,当用户使用鼠标滚轮滚动和窗口滚动时,我想做一些动作(通过滚动右侧的滚动条) 我已经提出了一个解决方案,但它可以通过两种方式进行操作,即用户通过鼠标滚轮滚动和使用窗口上的滚动条手动滚动。 这是我检测鼠标滚轮和窗口滚动条的代码 $(window).scroll(function(event){ var st = $(this).scrollTop(); if (st > lastScrollTop){
我已经提出了一个解决方案,但它可以通过两种方式进行操作,即用户通过鼠标滚轮滚动和使用窗口上的滚动条手动滚动。
这是我检测鼠标滚轮和窗口滚动条的代码
$(window).scroll(function(event){
var st = $(this).scrollTop();
if (st > lastScrollTop){
$( "#gear1" ).css( "-webkit-transform", "rotate(" + (r + 10) + "deg)" );
r = r + 10;
} else {
$( "#gear1" ).css( "-webkit-transform", "rotate(" + (r - 10) + "deg)" );
r = r - 10;
}
lastScroll = st;
});
当用户滚动鼠标滚轮时,我想做不同的动作;当用户滚动窗口滚动条时,我想做不同的动作
我需要这样的东西:
If (scroll type is Mouse wheel ){
// Do some action
}
If (scroll type is Window scroll (Scrolling by Scrollbar on right side of browser window) ){
// Do some action
}
您可以捕获
mouseweel
事件并防止其默认值,如果使用鼠标滚轮,则应防止滚动
。然后处理另一种情况的滚动。请注意,不同的浏览器/操作系统/输入设备处理鼠标滚轮的方式非常不同。我想尝试将其正常化,但不是通过设备而是通过最大输入,所以YMMV
例如:
$(window).on("scroll", function(evt) {
console.log("scroll NOT by mouse");
});
$(window).on("mousewheel", function(evt) {
console.log("scroll by mouse");
evt.preventDefault();
});
您可以使用它来检测鼠标滚轮的移动。以下是如何将其与jQuery(从文档复制的代码)一起使用:
或者,您可以在不使用任何库的情况下使用以下代码:
$('body,html').bind('scroll mousedown wheel DOMMouseScroll mousewheel keyup', function(e){
if ( e.which > 0 || e.type == "mousedown" || e.type == "mousewheel"){
//...
}
})
如果使用第二个选项,则在不使用鼠标滚轮的情况下检测滚动的代码为:
$(window).scroll(function(e){
//...
});
请参考问题我在问题中做了一些更改,并解释了我希望如何解决问题。请参考问题我在问题中做了一些更改,并解释了我希望如何解决问题。不幸的是,我们并不总能得到我们想要的。在scroll
处理程序中,您无法一次区分这两个事件,因此需要在scrollwheel事件成为滚动事件之前处理它。
$(window).scroll(function(e){
//...
});