美文网首页
滚轮事件的方法封装

滚轮事件的方法封装

作者: 一只小裸熊 | 来源:发表于2016-08-13 15:22 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>滚轮事件</title>
        <style>
            *{margin:0;padding:0;}
            #box{
                width: 400px;
                height: 400px;
                /*padding-top: 20px;*/
                margin: 20px auto 0;
                border: 2px solid #ccc;
                /*box-sizing:border-box;*/
                text-indent: 1rem;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <p>我喜欢的话。</p><br>
            <p>我更喜欢的话</p><br>
            <p>滑动滚轮</p>
        </div>
    </body>
        <script src="js/mouseWheel.js"></script>
        <script>
            // 获取元素
            var box=document.getElementById('box');
            mouseWheel(box,function(event,down){
                // 获取当前元素对象的宽度和高度
                var width=this.offsetWidth;
                var height=this.offsetHeight;
    
                //判断当前的方向
                if (down) {
                    // 确定是向下滑动后,继续判断,判断当前宽度是否大于500
                    if (width>=500&&height>=500) {
                        // 限定宽高
                        width=500;
                        height=500;
                    }else{
                        // 否则就让宽和高往上增长
                        this.style.width=width+1+"px";
                        this.style.height=height+1+"px";
                    }
                    // 否则当前的方向是往上滑
                }else{
                    // 确定是向上滑动后,限定一个宽高
                    if (width<=300&&height<=300) {
                        width=300;
                        height=300;
                    }else{
                        // 否则就让宽和高往下减
                        this.style.width=width-5+"px";
                        this.style.height=height-5+"px";
                    }
                }
    
            });
        </script>
    

    js封装部分

    /*
        @author     Henry Zhang
        @date       2016-008-02
        @version    01(版本)
    */ 
    function mouseWheel(obj,fn){
        // 获取是不是ff浏览器
        var ff=navigator.userAgent.indexOf("Firefox");
        // 判断浏览器类型
        if (ff!=-1) {
            // 为box添加滚轮事件
            obj.addEventListener('DOMMouseScroll',wheel,false);
        }else{
            obj.onmousewheel=wheel;
        }
        // 简化上一段函数代码
        function wheel(event){
            var event=event||window.event;
            var down=true;
            if (event.detail) {
                down=event.detail>0;
            }else{
                down=event.wheelDelta<0;
            }
            console.log(down);
            fn.apply(obj,[event,down]);
            /*
                注释:fn是作为参数来接受传进来的函数
                    apply()是一种方法,可以将外界需要用到的参数附加给fn方法
            */ 
    
            return false;
        }
    
    }
    

    </html>

    相关文章

      网友评论

          本文标题:滚轮事件的方法封装

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