美文网首页
vue 区域内拖拽滚动插件

vue 区域内拖拽滚动插件

作者: littlesunn | 来源:发表于2021-12-26 19:33 被阅读0次

    应用场景: 比如表格太长横向滚动,增强为鼠标拖拽滚动
    参数: targetCss, 具有overflow的那个元素

    <template>
      <div class="drag-area-container" id="drag-area">
        <slot />
      </div>
    </template>
    
    <script>
    export default {
      name: "DragScrollArea",  // 让此组件包裹让一个可滚动的元素,使其具有可拖拽滚动的能力
      props: {
          targetCss: { // 真正可滚动的目标元素的样式
              type: String,
              default: ".vxe-table--body-wrapper.body--wrapper"
          }
      },
      mounted() {
        this.initDrag();
      },
      methods: {
        initDrag() {
          let dragScrollArea = document.getElementById("drag-area")
          dragScrollArea.onmousedown = (e) => {
            let target = document.querySelector(this.targetCss);
            let fromX = e.clientX;
            let scrollLeft = target.scrollLeft;
            dragScrollArea.onmousemove = (e) => {
              let toX = e.clientX;
              dragScrollArea.style["user-select"] = "none"  // 防止拖拽时候选中元素
              target.scrollLeft = scrollLeft + (fromX - toX);
            }
            dragScrollArea.onmouseup = function (e) {
              dragScrollArea.onmousemove = null;
              dragScrollArea.onmouseup = null;
              dragScrollArea.style["user-select"] = "auto"  // 防止拖拽时候选中元素
            };
          }
    
        }
      }
    }
    </script>
    
    <style scoped>
    .drag-area-container {
      /* height: 100%; */
    }
    </style>
    

    相关文章

      网友评论

          本文标题:vue 区域内拖拽滚动插件

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