vue div拖拽效果(指令)

复制代码
import Vue from 'vue';

// 自定义元素实现弹框拖拽
Vue.directive('draw', {
  inserted: function (el) {
    el.setAttribute('style', 'position: fixed; z-index: 1000');
  },
  bind: function (el) {
    el.onmousedown = function (eventDown) {
      // 保持div和鼠标相对位置不变
      let len = eventDown.clientX - el.offsetLeft;
      let topLen = eventDown.clientY - el.offsetTop;
      el.onmousemove = function (event) {
        console.log(event, el.offsetLeft, el.offsetTop);
        event = event || window.event;
        let left = event.clientX - len;
        let top = event.clientY - topLen;

        left = Math.max(0, left);
        top = Math.max(0, top);
        left = Math.min(left, document.body.clientWidth - el.offsetWidth);
        top = Math.min(top, document.body.clientHeight - el.offsetHeight);
        el.style.left = left + 'px';
        el.style.top = top + 'px';

        el.onmouseup = function () {
          el.onmousemove = null;
          el.onmouseup = null;
        };
      };
    };
  },

  unbind: function (el) {
    el.onmousemove = null;
    el.onmouseup = null;
  }
});
复制代码

<div v-draw></div>

posted @   小韓烟柳  阅读(504)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2021-05-24 uni.request封装
点击右上角即可分享
微信分享提示