您好,欢迎来到尚佳旅游分享网。
搜索
您的当前位置:首页使用Vue做出DIV拖拽

使用Vue做出DIV拖拽

来源:尚佳旅游分享网
这次给大家带来使用Vue做出DIV拖拽,的注意事项有哪些,下面就是实战案例,一起来看一下。

效果图:

HTML代码:

<p id="box"> 
 位置
 <br>x:{{val.x}} <br>y:{{val.y}}
 <p v-drag="greet" id="drag" :style="style">
 //注意这里要通过指令绑定函数将当前元素的位置数据传出来
 </p>
</p>

JS代码:

Vue.directive('drag',//自定义指令 
 {bind:function (el, binding) {
 let op = el; //当前元素
 let self = this; //上下文
 op.onmousedown = function (e) {
 //鼠标按下,计算当前元素距离可视区的距离
 let disX = e.clientX - op.offsetLeft;
 let disY = e.clientY - op.offsetTop;
 document.onmousemove = function (e) {
 //通过事件委托,计算移动的距离 
 let l = e.clientX - disX;
 let t = e.clientY - disY;
 //移动当前元素 
 op.style.left = l + 'px';
 op.style.top = t + 'px';
 //将此时的位置传出去
 binding.value({x:e.pageX,y:e.pageY})
 };
 document.onmouseup = function (e) {
 
 document.onmousemove = null;
 document.onmouseup = null;
 };
 };
 }
 }
 );
 window.onload = function () {
 let vm = new Vue({
 el: '#box',
 data: {
 val: '123',
 style: {
 width: '100px',
 height: '100px',
 background: 'aqua',
 position: 'absolute',
 right: '30px',
 top: 0
 }
 },
 methods:{
 //接受传来的位置数据,并将数据绑定给data下的val
 greet(val){
 vm.val = val;
 }
 } ,
 });
 }

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

怎样对vue文件进行解析

react 实现单例组件(附代码)

Copyright © 2019- shangjiatang.cn 版权所有 湘ICP备2022005869号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务