Js滚轮事件

鼠标滚轮

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    <style>
        #div1 {width: 100px; height: 100px; background: red;}
    </style>
    <script>
        /*
         鼠标滚轮事件
         */
        window.onload = function() {
            var oDiv = document.getElementById('div1');
            /*
             ie/chrome : onmousewheel
             event.wheelDelta
             上:120
             下:-120

             firefox : DOMMouseScroll 必须用addEventListener
             event.detail
             上:-3
             下:3

             return false阻止的是  obj.on事件名称=fn 所触发的默认行为
             addEventListener绑定的事件需要通过event下面的preventDefault();
             */
            oDiv.onmousewheel = fn;

            if (oDiv.addEventListener) {
                oDiv.addEventListener('DOMMouseScroll', fn, false);
            }
            
            function fn(ev) {
                var ev = ev || event;
                
                var b = true;

                if (ev.wheelDelta) {
                    b = ev.wheelDelta > 0 ? true : false;
                } else {
                    b = ev.detail < 0 ? true : false;
                }
                
                if ( b ) {
                    this.style.height = this.offsetHeight - 10 + 'px';
                } else {
                    this.style.height = this.offsetHeight + 10 + 'px';
                }

                if (ev.preventDefault) {
                    ev.preventDefault();
                }
                return false;
            }
        }
    </script>
</head>

<body style="height: 2000px;">
<div id="div1"></div>
</body>
</html>

封装成插件

<script>
    /*
     鼠标滚轮事件
     */
    mousewheel(document.getElementById("div1"),function(){console.log("向下滚")},function(){console.log("向上滚")});
    function mousewheel(obj,downfn,upfn)
    {
        obj.onmousewheel = fn;
        if (obj.addEventListener) {
            obj.addEventListener('DOMMouseScroll', fn, false);
        }
        function fn(ev) {
            var ev = ev || event;
            var b = true;
            if (ev.wheelDelta) {
                b = ev.wheelDelta > 0 ? true : false;
            } else {
                b = ev.detail < 0 ? true : false;
            }
            if(b) {
                upfn&&upfn();
            } else {
                downfn&&downfn();
            }
            if (ev.preventDefault) {
                ev.preventDefault();
            }
            return false;
        }
    }
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容