vue 文本溢出鼠标拖动查看

全局注册自定义指令(main.js)
Vue.directive('dragabled', {
  bind(el, binding, vnode, oldVnode) {
    if (!binding) return
    el.onmousedown = e => {
      let disX = e.clientX
      let disY = e.clientY
      el.style.cursor = 'move'
      document.onmousemove = e => {
        e.preventDefault()
        const left = e.clientX - disX
        disX = e.clientX
        el.scrollLeft += -left
        const top = e.clientY - disY
        disY = e.clientY
        el.scrollTop += -top
      }
      document.onmouseup = e => {
        el.style.cursor = 'auto'
        document.onmousemove = null
        document.onmouseup = null
      }
    }
  }
})

使用方法

<div v-dragabled style="overflow:auto;"></div>

 

附:鼠标置于指定元素类名上不可拖动

......     
    el.onmousedown = e => {
      // 鼠标置于指定元素类名上不可拖动
      const classNames = e.path.map(p => p.className).reduce((total, curr) => {
        if (curr) total = [...total, ...curr.split(' ')]
        return total
      }, [])
      if (classNames.includes('flow-node')) return
      ......  
    }
...... 

 

posted @ 2021-11-04 10:34  _senjer  阅读(158)  评论(0)    收藏  举报