“mousewheel”是鼠标的滑轮滚动事件,因为是浏览器最基本的事件,有时候需要用它做点其他的效果,就像Fullpage.js插件那样,做一个基本的滚动,效果。
JS判断滑轮滚动方向
可以在任意DOM节点上使用mousewheel事件,在js中使用addEventListener在DOM上实现滚动监听:
document.getElementById(“sec”).addEventListener(“mousewheel”,scrollfunc);
但是有时候我们要判断滑轮是向上滚动还是向下滚动,所以我们要使用e.wheelDelta:
scrollfunc(e){
if(e.wheelDelta>0){
//"向上滚动"
}else{
//"向下滚动"
}
}
这是简单版本,我在别人的网站上看到的是这样的:
<script>
var scrollFunc = function (e) {
e = e || window.event;
if (e.wheelDelta) { //判断浏览器IE,谷歌滑轮事件
if (e.wheelDelta > 0) { //当滑轮向上滚动时
alert("滑轮向上滚动");
}
if (e.wheelDelta < 0) { //当滑轮向下滚动时
alert("滑轮向下滚动");
}
} else if (e.detail) { //Firefox滑轮事件
if (e.detail> 0) { //当滑轮向上滚动时
alert("滑轮向上滚动");
}
if (e.detail< 0) { //当滑轮向下滚动时
alert("滑轮向下滚动");
}
}
}
//给页面绑定滑轮滚动事件
if (document.addEventListener) {
document.addEventListener('DOMMouseScroll', scrollFunc, false);
}
//滚动滑轮触发scrollFunc方法
window.onmousewheel = document.onmousewheel = scrollFunc;
</script>
这是兼容那些很古老的IE浏览器和老版本FireFox吧
JQUERY判断滑轮滚动方向
jquery其实也差不多吧:
var delta = (event.originalEvent.wheelDelta) ? event.originalEvent.wheelDelta : -(event.originalEvent.detail || 0);
注意事项
用户使用滑轮的时候,一般都不值只滑一次,所以一般一次都是滑动166px,但是一般都会滑动2+次,所以绑定的事件就会多次执行,我暂时没找到解决办法。但是有一种情况,就是事件是一个jquery动画事件,那样的话,你可以在执行动画之前来一个stop()函数,这样就保证你的动画只会执行最后的一次。
最最重要的是别忘了在绑定的事件当中写一句:
e.preventDefault();
OVER!