拖拽盒子随意移动

同时给父元素和需要拖拽的元素进行设置style="position: relative;"

注册指令 

export default (app) => {
  app.directive("drag", {
    mounted(el) {
      let dragBox = el;
      dragBox.onmousedown = (e) => {
        e.preventDefault();
        let disX = e.clientX - dragBox.offsetLeft;
        let disY = e.clientY - dragBox.offsetTop;
        document.onmousemove = (e) => {
          e.preventDefault();
          let left = e.clientX - disX;
          let top = e.clientY - disY;
          dragBox.style.left = left + "px";
          dragBox.style.top = top + "px";
        };

        document.onmouseup = (e) => {
          e.preventDefault();
          document.onmousemove = null;
          document.onmouseup = null;
        };
      };
    },
  });
};

 

  directives: {
    drag(el) {
      let dragBox = el;
      dragBox.onmousedown = (e) => {
        // 如果是输入框就返回
        if (e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA") {
          return;
        }
        e.preventDefault();
        let disX = e.clientX - dragBox.offsetLeft;
        let disY = e.clientY - dragBox.offsetTop;
        document.onmousemove = (e) => {
          e.preventDefault();
          let left = e.clientX - disX;
          let top = e.clientY - disY;
          dragBox.style.left = left + "px";
          dragBox.style.top = top + "px";
        };

        document.onmouseup = (e) => {
          e.preventDefault();
          document.onmousemove = null;
          document.onmouseup = null;
        };
      };
    },
  },

 

 

可参考

https://blog.csdn.net/weixin_58032613/article/details/122759818?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.topblog&spm=1001.2101.3001.4242.1&utm_relevant_index=3

 

posted @ 2022-04-12 14:50  想吃水煮麻辣鱼  阅读(42)  评论(0编辑  收藏  举报