ホームページ  >  記事  >  ウェブフロントエンド  >  Vueを使ったドラッグ&ドロップ機能の実装手順を詳しく解説

Vueを使ったドラッグ&ドロップ機能の実装手順を詳しく解説

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-15 14:03:533090ブラウズ

今回は、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('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;
        }
      } ,
   });
  }
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、 の他の関連記事に注目してください。 phpの中国語サイトです!

推奨読書:

vueでのフィルター使用の概要

Webサイト以外のルートディレクトリにコンパイルおよびデプロイされたVueプロジェクトの処理方法の詳細な説明

JS設計におけるチェーンコールの使用の分析モード

以上がVueを使ったドラッグ&ドロップ機能の実装手順を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。