当前位置: 移动技术网 > IT编程>脚本编程>vue.js > 基于Vue实现拖拽功能

基于Vue实现拖拽功能

2018年05月11日  | 移动技术网IT编程  | 我要评论

三峡之窗在线影院,迈克尔杰克逊mv高清下载,广州摆地摊帅哥

本文实例为大家分享了vue实现拖拽功能的具体代码,供大家参考,具体内容如下

效果图:

html代码:

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

js代码:

vue.directive('drag',//自定义指令                   

    {bind:function (el, binding) {
        let odiv = el;  //当前元素
        let self = this; //上下文
        odiv.onmousedown = function (e) {
         //鼠标按下,计算当前元素距离可视区的距离
          let disx = e.clientx - odiv.offsetleft;
          let disy = e.clienty - odiv.offsettop;

          document.onmousemove = function (e) {
           //通过事件委托,计算移动的距离 
            let l = e.clientx - disx;
            let t = e.clienty - disy;
           //移动当前元素 
            odiv.style.left = l + 'px';
            odiv.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;
        }
      } ,
   });
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网