美文网首页
原生JS鼠标滚轮控制元素横向滚动

原生JS鼠标滚轮控制元素横向滚动

作者: 酸味的凯凯 | 来源:发表于2018-11-30 13:11 被阅读5次

应业务需求,顺手写了个轮子
兼容性应该不差

这个是TS版的,要用到JS里面的话要稍做调整


export class WheelDirective {

  private el: HTMLElement;

  constructor(nativeElement : HTMLElement) {
    this.el = nativeElement;
    this.handleWheelEvent();
  }

  handleWheelEvent () {
    const event = window.addEventListener ? 'addEventListener' : 'attachEvent';
    let wheel = '';

    if ('onmousewheel' in this.el) {
      wheel = 'mousewheel';
    } else if ('onwheel' in this.el) {
      wheel = 'wheel';
    } else if ('attachEvent' in window) {
      wheel = 'onmousewheel';
    } else {
      wheel = 'DOMMouseScroll';
    }
    this.el[event](wheel, this.scroll);
  }

  scroll = (event) => {
    if (this.el.clientWidth >= this.el.scrollWidth) { return; }
    event.preventDefault();
    this.el.scrollLeft += event.deltaY
      ? event.deltaY
      : (event.detail && event.detail !== 0)
        ? event.detail
        : -event.wheelDelta;
  }
}

API

const Ele = document.getElementById('ID');
new WheelDirective(Ele);

相关文章

  • 原生JS鼠标滚轮控制元素横向滚动

    应业务需求,顺手写了个轮子兼容性应该不差 这个是TS版的,要用到JS里面的话要稍做调整 API

  • 17_day 整屏幕滚动

    整屏滚动: jquery.mousewheel插件使用 : jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事...

  • 整屏幕滚动

    整屏滚动: jquery.mousewheel插件使用 : jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事...

  • 前端的整屏滚动

    整屏滚动: jquery.mousewheel插件使用 : jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事...

  • 整屏幕滚动

    整屏滚动: jquery.mousewheel插件使用 : jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事...

  • 整屏幕滚动

    整屏滚动: jquery.mousewheel插件使用 : jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事...

  • 整屏幕滚动

    整屏滚动: jquery.mousewheel插件使用 : jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事...

  • 整屏滚动

    整屏滚动: jquery.mousewheel插件使用 : jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事...

  • 整屏滚动

    整屏滚动: jquery.mousewheel插件使用 : jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事...

  • 整屏滚动 幻灯片

    整屏滚动 jquery.mousewheel插件使用 jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事件不兼...

网友评论

      本文标题:原生JS鼠标滚轮控制元素横向滚动

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