滚动鼠标,判断是下滚还是上滚

    /**
     *滚动鼠标,判断是下滚还是上滚
     *
     * 判断滚轮向上或向下在浏览器中也要考虑兼容性,现在五大浏览器(IE、Opera、Safari、Firefox、Chrome)中Firefox 使用detail,其余四类使用wheelDelta;
     * 两者只在取值上不一致,代表含义一致,detail与wheelDelta只各取两个值,detail只取±3,wheelDelta只取±120,其中正数表示为向上,负数表示向下。
     */
    let afterTop = 0;
    const scrollFunc = function (e: any): void {
      const beforeTop = Number($('#emoticonPackage .EmotionList-con').css("top").split('px')[0]);
      e = e || window.event;
      if (e.wheelDelta) {// IE/Opera/Chrome
        if (e.wheelDelta === 120) {
          afterTop = +beforeTop + 15;
        }
        if (e.wheelDelta === -120) {
          afterTop = +beforeTop - 15;
        }
      } else if (e.detail) {// Firefox
        if (e.detail === 3) {
          afterTop = +beforeTop + 15;
        }
        if (e.detail === -3) {
          afterTop = +beforeTop - 15;
        }
      }
      if (afterTop >= 0) {
        $('#emoticonPackage .EmotionList-con').css({ top: 0 + 'px' });
      } else {
        if (Math.abs(afterTop) + $('#box #emoticonPackage .EmotionList')[0].offsetHeight >= $('#emoticonPackage .EmotionList-con')[0].offsetHeight) {
          $('#emoticonPackage .EmotionList-con').css({ top: $('#box #emoticonPackage .EmotionList')[0].offsetHeight - $('#emoticonPackage .EmotionList-con')[0].offsetHeight + 'px' });
        } else {
          $('#emoticonPackage .EmotionList-con').css({ top: afterTop + 'px' });
        }
      }
    };
    if (document.addEventListener) {
      document.addEventListener('DOMMouseScroll', scrollFunc, false);
    }// W3C
    window.onmousewheel = scrollFunc; // IE/Opera/Chrome/Safari
  }
  public componentWillUnmount(): void {
    if (document.addEventListener) {// 组件卸载后应将滚动事件给移除
      document.addEventListener('DOMMouseScroll', () => { }, false);
    }// W3C
    window.onmousewheel = null; // IE/Opera/Chrome/Safari
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值