vue中的div 拖拽

封装指令

const vDraggable = {
    mounted(el) {
      let pos1 = 0,
        pos2 = 0,
        pos3 = 0,
        pos4 = 0;

      el.onmousedown = dragMouseDown;

      function dragMouseDown(e) {
        e = e || window.event;
        e.preventDefault();
        // 获取鼠标位置
        pos3 = e.clientX;
        pos4 = e.clientY;
        document.onmouseup = closeDragElement;
        document.onmousemove = elementDrag;
      }

      function elementDrag(e) {
        e = e || window.event;
        e.preventDefault();
        // 计算新位置
        pos1 = pos3 - e.clientX;
        pos2 = pos4 - e.clientY;
        pos3 = e.clientX;
        pos4 = e.clientY;
        // 设置元素新位置
        el.style.top = el.offsetTop - pos2 + 'px';
        el.style.left = el.offsetLeft - pos1 + 'px';
      }

      function closeDragElement() {
        // 停止移动
        document.onmouseup = null;
        document.onmousemove = null;
      }
    },
  };

使用

<div v-draggable class="draggable">
    使用指令拖动的 Div (Vue 3)
 </div>
posted @ 2025-04-09 16:34  丁少华  阅读(138)  评论(0)    收藏  举报