首頁  >  文章  >  web前端  >  基於Vue實作拖曳功能

基於Vue實作拖曳功能

不言
不言原創
2018-05-07 14:49:111454瀏覽

這篇文章主要為大家詳細介紹了Vue實現拖曳功能,拖曳方塊進行移動,具有一定的參考價值,有興趣的小夥伴們可以參考一下

本文實例為大家分享了Vue實作拖曳功能的具體程式碼,供大家參考,具體內容如下

效果圖:

##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(&#39;drag&#39;,//自定义指令                   

    {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 + &#39;px&#39;;
            op.style.top = t + &#39;px&#39;;
             //将此时的位置传出去
            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: &#39;#box&#39;,
      data: {
        val: &#39;123&#39;,
        style: {
          width: &#39;100px&#39;,
          height: &#39;100px&#39;,
          background: &#39;aqua&#39;,
          position: &#39;absolute&#39;,
          right: &#39;30px&#39;,
          top: 0
        }
      },
      methods:{
      //接受传来的位置数据,并将数据绑定给data下的val
        greet(val){
          vm.val = val;
        }
      } ,
   });
  }

相關推薦:

vue-simplemde實作圖片拖曳貼上功能(附程式碼)

基於vue.js和webpack的Chat範例

############################## #####

以上是基於Vue實作拖曳功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn