效果图
相同点
相同点 | 不同点 | |
---|---|---|
layerY | 距离元素的左上角距离 | 受元素的定位的影响,会从本元素往上找到第一个定位的元素的左上角 |
offsetY | 距离元素左上角的距离 | 计算相对于本元素的左上角,不在乎定位问题,计算的是内交点。是IE浏览器的特有属性 |
layerY与offsetY区别
实现拖拽功能
我们既然熟悉了这几个偏移属性的意思,那么我们就进入我们的重点。话不多说直接上代码
// darg.html
{{positionX}} {{positionY}}
//main.js let app = new Vue({ el:'#app', data:{ positionX:0, positionY:0, }, methods:{ move(e){ let op = e.target; //获取目标元素 //算出鼠标相对元素的位置 let disX = e.clientX - op.offsetLeft; let disY = e.clientY - op.offsetTop; document.Onmousemove= (e)=>{ //鼠标按下并移动的事件 //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置 let left = e.clientX - disX; let top = e.clientY - disY; //绑定元素位置到positionX和positionY上面 this.positiOnX= top; this.positiOnY= left; //移动当前元素 op.style.left = left + 'px'; op.style.top = top + 'px'; }; document.Onmouseup= (e) => { document.Onmousemove= null; document.Onmouseup= null; }; } }, computed:{}, });
当然,我们可以将它绑定为一个自定义指令,这样的话就可以用调用指令的形式来实现拖拽效果,下面是定义自定义指令的代码
// darg.html
//main.js let app = new Vue({ el:'#app', data:{}, methods:{}, directives: { drag: { // 指令的定义 bind: function (el) { let op = el; //获取当前元素 op.Onmousedown= (e) => { //算出鼠标相对元素的位置 let disX = e.clientX - op.offsetLeft; let disY = e.clientY - op.offsetTop; document.Onmousemove= (e)=>{ //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置 let left = e.clientX - disX; let top = e.clientY - disY; //绑定元素位置到positionX和positionY上面 this.positiOnX= top; this.positiOnY= left; //移动当前元素 op.style.left = left + 'px'; op.style.top = top + 'px'; }; document.Onmouseup= (e) => { document.Onmousemove= null; document.Onmouseup= null; }; }; } } } });
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
utils.js使用案例详解
Nuxt.js SSR的权限验证使用
以上就是怎样使用Vue操作DIV的详细内容,更多请关注其它相关文章!