美文网首页
鼠标滚轮事件兼容性处理

鼠标滚轮事件兼容性处理

作者: 阿古瓜 | 来源:发表于2018-06-15 12:10 被阅读0次

    一般版

    <!DOCTYPE html>
    <html lang="zh">
    <head>
    <meta charset="UTF-8" />
    <title>鼠标滚轮事件兼容性处理</title>
    <style type="text/css">
        #box { width: 100px;height: 100px;background: red;}
    </style>
    <script type="text/javascript"> 
    window.onload = function(){
        var oBox = document.getElementById('box');
        if(oBox.addEventListener){
            // Ie9+和chrome下 绑定鼠标滚轮事件
            oBox.addEventListener('mousewheel', fnscroll, false);
            // firefox下 绑定鼠标滚轮事件
            oBox.addEventListener('DOMMouseScroll',  fnscroll, false);
        } else {
            oBox.attachEvent('onmousewheel',  fnscroll);
        }
                    
        function fnscroll(ev){
            var ev = ev || event;
            var fx = null;      
            // Ie和chrome下 鼠标滚轮向上大于0;
            ev.wheelDelta && (fx =  ev.wheelDelta>0 );  
            // firefox下 鼠标滚轮向上小于0
            ev.detail && (fx = ev.detail < 0  );
    
        //  取出当前元素的height
            var h = oBox.clientHeight;
        //  当鼠标滚轮向上时,盒子高度减少;向下时,盒子高度增加;
            oBox.style.height = h + ( fx ? -5 : 5 ) + 'px';
        
            // 阻止通过addEventListener绑定而触发的默认行为 ; 
            ev.preventDefault && ev.preventDefault() ;    
            return false;   // 阻止默认事件,通过On事件名称所触发的默认行为(Ie);
        }   
    }   
    </script> 
    </head> 
    <body> <div id="box"> </div> </body> </html>
    

    精炼版

    <!DOCTYPE html>
    <html lang="zh">
    <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style type="text/css">
        #box { width: 100px;height: 100px;background: red;}
    </style>
    <script type="text/javascript"> 
    window.onload = function(){
        var oBox = document.getElementById('box');
        if(oBox.addEventListener){
            // Ie9+和chrome下 绑定鼠标滚轮事件
            oBox.addEventListener('mousewheel', fnscroll, false);
            // firefox下 绑定鼠标滚轮事件
            oBox.addEventListener('DOMMouseScroll',  fnscroll, false);
        } else {
             // Ie8以下  
            oBox.attachEvent('onmousewheel',  fnscroll);
        }
            
        // 滚动鼠标滚轮而改变盒子高度;   
        function fnscroll(ev){
            var ev = ev || event;
            var fx = null;  // 标记鼠标滚轮的方向,向上为真,向下为负;
            var h = oBox.clientHeight;
                
            fx = ev.wheelDelta ? ev.wheelDelta > 0 : ev.detail < 0 ;                
            oBox.style.height = h + ( fx ? -5 : 5 ) + 'px';
            
            // 阻止通过addEventListener绑定而触发的默认行为 ; 
            ev.preventDefault && ev.preventDefault() ;    
            return false;   // 阻止默认事件,通过On事件名称所触发的默认行为(IE);
        }   
    }
        
    </script>
    </head>
    <body><div id="box"></div></body></html>
    

    相关文章

      网友评论

          本文标题:鼠标滚轮事件兼容性处理

          本文链接:https://www.haomeiwen.com/subject/fanpeftx.html