vue封装自定义指令拖拽

vue封装自定义指令拖拽

在这里插入图片描述

我是拖拽红框区域进行拖拽

	// 拖拽
	Vue.directive('drag', {
	  inserted: function (el) {
	    
	   el.onmousedown=function(ev){
	    console.log('自定义指令',el,ev)
	    let aaa = ev.target.parentElement; // 获取目标元素的父级元素
	      //计算出鼠标相对点击元素的位置,ev.clientX获取的是鼠标的位置,OffsetLeft是元素相对于外层元素的位置
	      let x = ev.clientX - aaa.offsetLeft;
	      let y = ev.clientY - aaa.offsetTop;
	      document.onmousemove = ev => {
	        // 获取拖拽元素的位置
	        let left = ev.clientX - x;
	        let top = ev.clientY - y;
	        this.positionX = left;
	        this.positionY = top;
	        //console.log(document.documentElement.clientHeight,aaa.offsetHeight)
	        // 把拖拽元素 放到 当前的位置
	        if (left <= 0) {
	          left = 0;
	        } else if (
	          left >=
	          document.documentElement.clientWidth - aaa.offsetWidth
	        ) {
	          //document.documentElement.clientWidth 屏幕的可视宽度
	          left = document.documentElement.clientWidth - aaa.offsetWidth;
	        }
	        if (top <= 0) {
	          top = 0;
	        } else if (
	          top >=
	          document.documentElement.clientHeight - aaa.offsetHeight
	        ) {
	          // document.documentElement.clientHeight 屏幕的可视高度
	          top = document.documentElement.clientHeight - aaa.offsetHeight;
	        }
	        aaa.style.left = left + 'px';
	        aaa.style.top = top + 'px';
	      };
	      // 为了防止 火狐浏览器 拖拽阴影问题
	      document.onmouseup = ev => {
	        document.onmousemove = null;
	        document.onmouseup = null;
	      };
	
	   };
	  }
	  
	 })

在这里插入图片描述
哪里使用哪里加上 v-drag

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值