天天看點

滑鼠滾輪的事件

這段時間的都是講事件的,是以今天再來講一個滑鼠滾輪的事件。

要實作的功能是:

* 當滑鼠滾輪向下滾動時,box1變長

* 當滑鼠滾輪向上滾動時,box1變短

廢話少說,代碼奉上:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #box1{
                width: 100px;
                height: 100px;
                background: red;
            }
            
        </style>
        <script type="text/javascript">
            window.onload = function(){
                
                box1 = document.getElementById("box1");
                //綁定滾輪事件
                /*
                 * onmousewheel滑鼠滾輪滾動事件,會在滾輪滾動時觸發,但是火狐不相容
                 * 在火狐中需要使用DOMMouseScroll來綁定滾輪事件
                 * 注意該事件需要addEventLister()來綁定
                 * 
                 */
                box1.onmousewheel = function(event){
                    alert("滾了")
                /*
                 * 當滑鼠滾輪向下滾動時,box1變長
                 * 當滑鼠滾輪向上滾動時,box1變短
                 * 判斷滑鼠滾輪滾動的方向
                 * event.wheelDelta 可以擷取滑鼠滾輪滾動的方向
                 * 向上滾120,向下滾-120
                 * wheelDelta火狐不支援,是以使用
                 * event.detail來擷取滾動的方向
                 * 向上滾-3,向下滾3
                 */
                event = event || window.event;
                if(event.wheelDelta>0 || event.detail<0){
                    box1.style.height = event.clientHeight - 10 +"px"
                }else{
                    box1.style.height = event.clientHeight + 10 +"px"
                }
                /*
                 * 當滾輪滾動時,如果浏覽器有滾動條,滾動條會随之滾動,
                 * 這是浏覽器的預設行為,如果不希望發生,則可以取消預設行為。使用return false
                 * 但是addEventListener()方法綁定響應函數,取消預設行為不能使用return false,需要使用event來取消預設行為
                 * event.preventDefault();但是IE8不支援,不能直接調用。
                 */
                if(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{
                        obj.attachEvent('on'+eventstr,function(){
                            callback.call(obj);
                        })
                    }
                }
            }
        </script>
    </head>
    <body>
        <div id="box1"></div>
    </body>
</html>