鼠标滚轮事件(兼容版)
案例背景
通过鼠标滚轮滚动,放大缩小容器(上滚变短,下滚变长)。
案例代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>滚轮事件</title> </head> <body> <div id="box1"></div> </body> <script> window.onload = function(){ //获取div var box1 = document.getElementById("box1"); // 为div绑定鼠标滚轮事件 /** * onmousewheel鼠标滚轮事件,会在滚轮滚动时触发 * *但是火狐不支持该属性 * *在火狐中需要使用DOMMouseScroll 来绑定滚动事件 * *并且该事件需要通过addEventListener() 函数来绑定 */ box1.onmousewheel = function(event){ event = event || window.event; /** * event.wheelDelta 可以获取鼠标滚轮事件的方向 * 向上滚 120 向下滚 -120 * wheelDelta这个值我们不看大小,只看正负 * * wheelDelta火狐不支持 * 在火狐中使用event.detail来获取滚动方向 * 向上滚 -3 向下滚 3 */ // 判断鼠标滚动方向 if(event.wheelDelta > 0 || event.detail < 0){ // 滚轮向上滚 box1变短 // clientHeight属性表示容器可见高度 box1.style.height = box1.clientHeight - 10 + "px"; }else{ // 滚轮向下滚 box1变长 box1.style.height = box1.clientHeight + 10 + "px"; } /** * 使用addEventListener()方法绑定响应函数,取消默认行为是不能使用return false * 需要使用event来取消 event.preventDefault() * 但是IE8不支持 */ event.preventDefault && event.preventDefault(); /** * 当滚轮滚动时,如果浏览器有滚动条,滚动条随之滚动 * 这是浏览器默认欣慰,不希望发生时,可取消 */ return false; } // 为火狐绑定滚轮事件 bind(box1 , "DOMMouseScroll" , box1.onmousewheel); // 事件绑定方法 function bind(obj , eventStr , callback){ if(obj.addEventListener){ // 大部分浏览器兼容的方式 obj.addEventListener(eventStr , callback , false); }else{ /** * this是有谁调用方法决定 * callback.call(obj) */ // IE8以下 obj.attachEvent("on"+eventStr , function(){ // 在匿名函数中调用回调函数 callback.call(obj); }) } } } </script> <style> #box1 { background-color: red; width: 6.25rem; height: 6.25rem; } </style> </html>