<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>

    #box1{
      width: 100px;
      height: 100px;
      background-color: red;
      position: fixed; 
    }

    #box2{
      width: 100px;
      height: 100px;
      background-color: yellow; 
      position: absolute;
      left: 200px;
      top: 200px;
    }

    
  </style>

  <script>

    window.onload = function(){
  
     
        var box1 = document.getElementById("box1"); 

        /**
         * onmousewheel 鼠标滚轮滚动的事件, 会在滚轮滚动时触发
         * 但是火狐不支持该属性
         * 
         *  在 火狐中 需要使用 DOMMouseScroll 来绑定滚动事件
         *  该事件需要通过 addEventListener() 函数来绑定
        */
  
        box1.onmousewheel = function (event){

          event = event || window.event;

          // 判断鼠标滚轮滚动的方向
          //  event.wheelDelta 可以获取鼠标滚轮滚动的方向;
          
          // wheelDelta 不看大小 只看正负 向上是正值 向下是负值
          // wheelDelta 这个属性获取火狐中不支持
          // 在 火狐中使用 event.detail 来获取滚动的方向

          // 向上滚  
          // alert(event.wheelDelta);

          // 向上滚-3 下滚3
          // alert(event.detail)

           /**
               *  当鼠标滚轮 向下滚动时 box1 边长
               *  当滚轮向上滚动时, box1 变短
              */


          // 判断鼠标滚轮 滚动的方向
          if(event.wheelDelta > 0 || event.detail < 0){
            //  alert("向上滚") 
            // 向上滚 box1 变短
            box1.style.height = box1.clientHeight - 10 + 'px';

          }else{
            // alert("向下滚")
            // 向下滚 box1 变长
            box1.style.height = box1.clientHeight + 10 + 'px';
          }


          /**
           *  使用addEventListener() 方法绑定的响应函数 取消默认行为时不能使用 return false
           *  需要使用 event 来取消默认行为  event.preventDefault();
           *  但是 ie8 不支持 event.preventDefault() 
          */
          event.preventDefault && event.preventDefault();
          
          /**
           *  当滚轮滚动时 如果浏览器有滚动条 滚动条会随之滚动 
           *  这是浏览器默认行为 如果浏览器不希望发生 则可以取消默认行为
           */
          return false;

        }

        // 为 火狐 绑定滚轮事件
        bind(box1,"DOMMouseScroll",box1.onmousewheel)
 
    }


    // 定义 一个函数 用来 为指定元素绑定响应函数
    /**
     *  addEventListener() 中的this, 是绑定事件的对象
     *  attachEvent() 中的this, 是window
     *  需要统一两个方法 this
     *  参数
     *   obj 绑定事件的对象
     *  eventStr 事件的字符串 (不要on)
     *  callback 回调函数
    */
   function bind(obj,eventStr,callback){ 
      if(obj.addEventListener){
          // 大部分浏览器兼容的方式
          obj.addEventListener(eventStr,callback,false);
      }else{
          // ie8 及以下
          obj.attachEvent("on" + eventStr,function(){
              // 在 匿名函数中 调用 回调函数 
              // 改变 this 指向
              callback.call(obj);
          });
      }  
}
   
    

  </script>
</head>
<body style="height: 2000px;">
  
  <div id="box1"> </div> 
</body>
</html>