鼠标滚轮,在普通浏览器是 mousewheel 这个事件
但是在火狐中是 DOMMouseScroll 这个事件,那么如何让其兼容?
这里我封装了一个 mouseScroll() 的方法,这样就可以检测到鼠标滚轮的动作了。
//兼容鼠标滚轮 function mouseScroll(obj,fn){ addEvent(obj,"mousewheel",fn); addEvent(obj,"DOMMouseScroll",fn); } //跨浏览器添加事件 function addEvent(obj, type, fn) { if (obj.addEventListener) { obj.addEventListener(type, fn, false); } else if (obj.attachEvent) { obj.attachEvent('on' + type, function () { fn.call(obj); }); } } //跨浏览器移除事件 function removeEvent(obj, type, fn) { if (obj.removeEventListener) { obj.removeEventListener(type, fn, false); } else if (obj.detachEvent) { obj.detachEvent('on' + type, fn); } }
好,我们来测试看看
JS:
var oDiv1=song("#lbq").yx();
function ss(ev){
var oEvent=ev||event;
alert("mouseScroll");
}
mouseScroll(oDiv1,ss);
HTML:
<div class="bo" id="lbq">
sdfasdf
</div>
CSS:
#lbq{
background: #f60;
height:200px;
width:200px;
}
运行代码:
并检测一下 鼠标滚动 是不是可以弹窗 ,
如果看到了弹出,则证明已经成功了第一步。
那么如何检测鼠标滚轮是 向上呢,还是向下啊? 一次滚轮的值是多少?
IE:oEvent.wheelDelta
上 正
下 负
火狐 oEvent.detail
上 负
下 正
因此需要写一个兼容性的判断, 是上 还是下
function ss(ev){ var oEvent=ev||event; var down=true; down=oEvent.wheelDelta?oEvent.wheelDelta<0:oEvent.detail>0; console.log(down); }
这样就能检测到 向上 还是向下了
做一个小案例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> div,ul,li,body{margin:0px;padding:0px;list-style:none;} #lbq{ background: #f60; height:200px; width:200px; } </style> <script type="text/javascript" src="js/base.js"></script> <script type="text/javascript"> window.onload=function(){ var oDiv1=song("#lbq").yx(); function ss(ev){ var oEvent=ev||event; var w_h=song("#lbq").css(["height","width"]); var down=true; down=oEvent.wheelDelta?oEvent.wheelDelta<0:oEvent.detail>0; console.log(w_h.height); if(down){ song("#lbq").css({"height":parseInt(w_h.height)+10,"width":parseInt(w_h.width)+10}); }else{ song("#lbq").css({"height":parseInt(w_h.height)-10,"width":parseInt(w_h.width)-10}); } } mouseScroll(oDiv1,ss); } </script> </head> <body> <div class="bo" id="lbq"> sdfasdf </div> </body> </html>
下载压缩包,使用base.js 文件
以下代码使用了 动画
window.onload=function(){ var oDiv1=song("#lbq").yx(); function ss(ev){ var oEvent=ev||event; var w_h=song("#lbq").css(["height","width"]); var down=true; down=oEvent.wheelDelta?oEvent.wheelDelta<0:oEvent.detail>0; var diffx=30; if(down){ //song("#lbq").css({"height":parseInt(w_h.height)+10,"width":parseInt(w_h.width)+10}); song("#lbq").startMove({"height":parseInt(w_h.height)+diffx,"width":parseInt(w_h.width)+diffx},300); }else{ //song("#lbq").css({"height":parseInt(w_h.height)-10,"width":parseInt(w_h.width)-10}); song("#lbq").startMove({"height":parseInt(w_h.height)-diffx,"width":parseInt(w_h.width)-diffx},300); } } mouseScroll(oDiv1,ss); }