vue实现拖拽效果
vue中实现拖拽效果,供大家参考,具体内容如下
首先要搞明白分清clientYpageYscreenYlayerYoffsetY的区别
作用3(事件对象中记录的鼠标位置)
语法解释
evt.screenX相对于屏幕的左上角为原点
evt.screenY
evt.clientX相对于浏览器的客户端左上角为原点(不计算滚动条位置)
evt.clientY
evt.pageX相对于浏览器的客户端左上角为原点(计算滚动条的位置)
evt.pageY
evt.offsetX以自己的左上角为原点
evt.offsetY
evt.pageY/evt.pageX相当于文档的左上角为原点,即包括被被隐藏的距离;
evt.clientY/evt.clientX相当于浏览器可视窗口的左上角为原点,即不包括被被隐藏的距离;
实现拖拽功能
{{positionX}} {{positionY}}
当然,我们可以将它绑定为一个自定义指令,这样的话就可以用调用指令的形式来实现拖拽效果,下面是定义自定义指令的代码
在main.js中定义全局指令
Vue.directive('drag' drag:{ //指令的定义 bind(el){ letodiv=el;//获取当前元素 oDiv.onmousedown=(e)=>{ //算出鼠标相对元素的位置 letdisX=e.clientX-odiv.offsetLeft; letdisY=e.clientY-odiv.offsetTop; document.onmousemove=(e)=>{ //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置 letleft=e.clientX-disX; lettop=e.clientY-disY; if(left<3){ left=0; odiv.style.width="2px"; }else{odiv.style.width="auto";} if(left>innerWidth-odiv.offsetWidth){left=innerWidth-odiv.offsetWidth;odiv.style.width="2px";} //移动当前元素 odiv.style.left=left+'px'; odiv.style.top=top+'px'; }; document.onmouseup=(e)=>{ document.onmousemove=null; document.onmouseup=null; }; } } });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。