この記事では、主に次のような Vue ドラッグ アンド ドロップの簡単な実装を紹介します。 レンダリング 重複は判定されず、古いデータは削除されません。 データ本体 <MyShuttle:dataOrigin='[ { 名前:「データ001」 ID: "番号 001", }, { 名前:「データ002」 ID: "番号 001", }, { 名前:「データ003」 ID: "番号 001", }]' :スペース='[{ 名前:"右001", ID:"右 001", }]' /> コード ドラッグ可能 ドラッグ可能を有効にする フォロー // ブラウザがデフォルトでこの動作をしないようにします。そうしないと、クロスが表示され、見栄えが悪くなります。 デフォルトの動作を防ぐ @dragleave.stop="dragleave($event, 'main')" 現在の要素に入ると、 @dragend.stop="dragEnd($event, item)" ドラッグコンテンツトリガーをドロップする ドラッグイベントとプロパティマークこれは非常に重要です!!! これにより、ドラッグ イベントの動作が決まります。クリックしてドラッグを開始すると、マウスがクリックされた場所がマーカーになります。 H5 ドラッグ属性 ドラッグ可能 draggable: 要素をドラッグ可能にする必要がある場合は、true に設定する必要があります。デフォルト値は false です。デフォルトでは、選択したテキスト、画像、リンクをドラッグできます。 マウスが対象の div ボックスに移動すると、追加されます。単純な例で問題を最もよく説明できます。 <テンプレート> <div class="MyShuttle"> <div class="MyShuttleLeft"> <div class="title">データソース</div> <div class="dataBox" @dragleave.stop="dragleave($event, 'main')"> <div v-for="(item, i) in dataOrigin" :key="i" class="dataList" draggable @dragenter.prevent @dragover.prevent @dragstart.stop="dragstart($event, item)" @dragend.stop="dragEnd($event, item)"> {{item.Name}} </div> </div> </div> <div class="MyShuttleCenter"></div> <div class="MyShuttleRight"> <div class="title">データソース</div> <div ref="MyShuttleRight" class="dataBox"> <div v-for="(item, i) in spaceList" :key="i" class="dataList" draggable @dragenter.prevent @dragover.prevent> {{item.Name}} </div> </div> </div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: ''、 コンポーネント: {}, 小道具: { データオリジン: { タイプ: 配列 }, 空間: { タイプ: 配列 } }, データ() { 戻る { スペースリスト: this.space, ドラッグステータス: false } }, 計算: {}, 時計: {}、 作成された() { }, マウント() { }, メソッド: { ドラッグリーブ(e, アイテム) { // コンソール.log(e, アイテム) if (item === 'main') { this.isDragStatus = true } それ以外 { this.isDragStatus = false } // コンソールログ(this.isDragStatus) }, ドラッグスタート(e, アイテム) { // コンソール.log(e, アイテム) }, ドラッグ終了(e, 項目) { const top = this.$refs.MyShuttleRight.getBoundingClientRect().top const 右 = this.$refs.MyShuttleRight.getBoundingClientRect().右 定数 bottom = this.$refs.MyShuttleRight.getBoundingClientRect().bottom const 左 = this.$refs.MyShuttleRight.getBoundingClientRect().左 console.log(上、右、下、左) console.log(e.clientX, e.clientY, アイテム) if (this.isDragStatus && e.clientY > 上 && e.clientY < 下 && e.clientX > 左 && e.clientX < 右) { this.spaceList.push(アイテム) console.log(this.spaceList.indexOf(item)) } } } } </スクリプト> <スタイル スコープ lang="scss"> .マイシャトル{ 幅: 100%; 高さ: 308px; ディスプレイ: フレックス; コンテンツの両端揃え: スペースの間; // 左と右のボックスの共通スタイル。MyShuttleLeft、 .MyShuttleRight { 境界線: 1px 実線 #dddddd; 境界線の折りたたみ: 折りたたみ; 。タイトル { ボックスのサイズ: 境界線ボックス; 幅: 100%; 高さ: 40px; 背景: #f5f5f5; 境界線の半径: 4px 4px 0px 0px; border-bottom: 1px 実線 #dddddd; パディング: 10px 16px; フォントサイズ: 14px; フォントファミリー: PingFangSC-Regular、PingFang SC; フォントの太さ: 400; 色: #333333; 行の高さ: 20px; } .データボックス{ 幅: 100%; 高さ: 228px; オーバーフロー:自動; パディング: 6px 0; .データリスト{ 幅: 96%; 高さ: 40px; ボックスのサイズ: 境界線ボックス; フォントサイズ: 14px; フォントファミリー: PingFangSC-Regular、PingFang SC; フォントの太さ: 400; 色: #666; 行の高さ: 20px; マージン: 0 2% 10px; パディング: 10px 16px; 境界線: 1px 実線 #ddd; 境界線の半径: 4px; ユーザー選択: なし; カーソル: ポインタ; &:ホバー{ 色: #01bc77; 背景: rgba(1, 188, 119, 0.1); } } } } .MyShuttleLeft { 幅: 362ピクセル; 高さ: 100%; 背景: #ffffff; 境界線の半径: 4px; } .MyShuttleCenter { 幅: 64ピクセル; 高さ: 100%; } .MyShuttleRight { 幅: 362ピクセル; 高さ: 100%; 背景: #ffffff; 境界線の半径: 4px; } } </スタイル> これで、vue ドラッグ アンド ドロップ追加の簡単な実装に関するこの記事は終了です。より関連性の高い vue ドラッグ アンド ドロップ追加のコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: HTMLのマーキータグは、シームレスなスクロールマーキー効果を実現します。
1. サーブレットとは何か1.1. 正式な言葉で説明する:サーブレットは、動的な Web リソースを...
ロックの分類:データ操作の粒度から:テーブルロック:操作時にテーブル全体がロックされます。行ロック:...
<br />テーブルは、昔から誰もが使ってきたタグで、今も使われています。しかし、現在の...
関数のカリー化(黒い疑問符の顔)? ? ?カレー(黒い疑問符の顔)? ? ?これは完璧な中国語翻訳で...
目次序文1. 準備2. 実際の戦闘2.1 ミニプログラムの権限を設定する2.2 カプセル化ツールの機...
1.公式サイトからインストールパッケージをダウンロードするhttp://nginx.org/en/d...
この記事の例では、簡単なショッピングカート機能を実現するためのjsの具体的なコードを参考までに共有し...
以前、MySQL データベースのデュアルマシン ホット スタンバイの設定方法を紹介しました。ご興味の...
色特性の分類あらゆる色は、赤、緑、青の三原色から構成されます。三原色の中で暖色なのは赤だけなので、作...
個人のウェブサイトがどんなに素晴らしいものであっても、サイバースペースの広大な海に浮かぶ小さなボート...
Linux でディレクトリを切り替えるとなると、誰もが間違いなくcdコマンドを思い浮かべるでしょう。...
目次1. 3.0をより適切にサポートするには、vue/cliのバージョンが4.5.0以上であることを...
1. kvm仮想化をインストールする : : : : : : : : : : : : : : : :...
CSS3 はアニメーションを作成でき、多くの Web ページのアニメーション画像、Flash アニメ...
MySQL 6.1.3 をベースにした 8.0.13 をインストールします。 MySQL 8.0....