この記事では、主に次のような 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のマーキータグは、シームレスなスクロールマーキー効果を実現します。
質問: コンピュータを再起動した後、docker の mysql コンテナを再起動できません。原因が...
CentOS 6.4 環境で MySQL 5.1 を 5.5.36 にアップグレードする手順を記録し...
HTML画像にハイパーリンクを追加すると醜い青い枠線が表示される次のように:解決: CSS スタイル...
vue-cli は stimulsoft.reports.js を使用します (ナニーレベルのチュー...
この記事では、参考までにMySQLの無料インストール構成チュートリアルを紹介します。具体的な内容は次...
時間フィールドは、データベースの使用時によく使用されます。よく使われるのは作成時間と更新時間です。し...
注意すべき点は、イベントバブリング自体の特性上、メリットだけでなくデメリットも生じるということです。...
スレッドがテーブルに対して DELAYED ステートメントを実行するときに、そのようなハンドラーが存...
会社のビジネス要件により、次の図の赤い領域の効果を達成する必要があります。 効果の説明: 1. 赤い...
ステップ 1: yum install httpd -y #httpd サービスをインストールします...
ここではCentOS7が使用されており、カーネルバージョンは [root@localhost ~]#...
目次序文1. Tomcat クラスローダー構造図: 2. Tomcat のクラスロードプロセスの説明...
序文この記事は主に、MySQL で浮動小数点型を文字型に変換するときに発生する問題を紹介します。これ...
CSS3 は、要素の 2D 平面変換と視覚的な 3D 空間変換を実装します。2D 変換はより頻繁に使...
Angular入門Angular は、Google が開発したオープンソースの Web フロントエン...