Vueでドラッグアンドドロップインターフェースを作成する方法
Vue Draggableを使用して、ドラッグアンドドロップの並べ替えをすばやく実装し、ほとんどのプロジェクトに適した双方向のバインディング、アニメーション、クロスコンテナードラッグをサポートします。 2。ネイティブHTML5ドラッグアンドドロップAPIを使用して、サードパーティライブラリに依存せずに動作を完全にカスタマイズしますが、手動のステータス管理が必要です。プロジェクトのニーズに応じて適切なソリューションを選択する必要があり、ほとんどの場合、Vue Draggableが推奨され、特別なニーズに合わせて軽量またはオプションのネイティブ実装を選択できます。
VUEでドラッグアンドドロップインターフェイスを作成することは、特にVue Draggable
(Surtable.jsに基づく)などのライブラリの助けを借りて、またはNative HTML5 Drag and Drop APIを使用して、簡単です。以下は、人気のあるライブラリとネイティブイベントを備えた建物を使用する2つの実用的なアプローチです。そのため、ニーズに基づいて選択できます。

Vue Draggableの使用(ほとんどの場合に推奨)
Vue Draggable
、sortable.jsをラップするVueコンポーネントであり、最小限のコードでsortableおよびDraggableリストを簡単に作成できます。
1. Vue Draggableをインストールします
VUE 3:

npmインストールvuedraggable@^4.1.0
注:VUE 3の互換性にバージョン4を使用します。
2。基本的な使用法
コンポーネントとしてvuedraggable
インポートして使用します。

<テンプレート> <div> <h3>ドラッグアンドドロップリスト</h3> <ドラッグ可能 v-model = "items" tag = "ul" item-key = "id" ゴーストクラス=「ゴースト」 @start = "dragstart" @end = "dragend" > <template #item = "{element}"> <li> {{element.name}} </li> </テンプレート> </draggable> </div> </テンプレート> <スクリプトのセットアップ> 'vue'から{ref}をインポートします。 「vuedraggable」からドラッグ可能なインポート。 //アイテムのリスト const items = ref([[ {id:1、name: 'item 1'}、 {id:2、name: 'item 2'}、 {id:3、name: 'item 3'} ]); 関数dragstart(){ console.log( 'drag start'); } 関数dragend(){ console.log( 'drag endded'); console.log( 'new Order:'、items.value); } </script> <style> 。おばけ { 不透明度:0.5; 背景:#c8ebfb; } </style>
重要なオプション:
-
v-model
:リストと更新を並べ替えてバインドします。 -
tag
:ラッパーを特定の要素としてレンダリングします(この場合はul
)。 -
item-key
:VUE 3のv-for
のようなレンダリングに必要です(一意のキーを使用)。 -
ghost-class
:ドラッグされたプレースホルダーにクラスを適用します。
この方法は、リスト、グリッド、さらには最小限の労力でドラッグするクロスコンテナーをサポートしています。
ネイティブHTML5のドラッグアンドドロップを使用する(カスタム動作用)
完全に制御したい場合、または外部ライブラリを避けている場合は、ネイティブAPIを使用してください。
例:ネイティブイベントを備えたDraggableリスト
<テンプレート> <div> <h3>ネイティブドラッグアンドドロップ</h3> <ul> <li v-for = "(item、index)inアイテム」 :key = "item.id" draggable = "true" @dragstart = "ondragstart(index)" @dragover.prevent = "ondragover($ event、index)" @drop = "ondrop(index)" @dragend = "ondragend" class = "draggable-item" > {{item.name}} </li> </ul> </div> </テンプレート> <スクリプトのセットアップ> 'vue'から{ref}をインポートします。 const items = ref([[ {id:1、name: 'apple'}、 {id:2、name: 'banana'}、 {id:3、name: 'Cherry'} ]); const draggedindex = ref(null); function ondragstart(index){ draggedindex.value = index; // Firefoxに必要です event.DatatRansfer?.SetData( 'Text/Plain'、 ''); } function ondragover(event、index){ const current = draggedindex.value; const target = index; if(current === null || current ===ターゲット)return; //配列を再注文します const moveTiTem = items.value.splice(current、1)[0]; items.value.splice(ターゲット、0、movemitem); //インデックスを更新します draggedindex.value =ターゲット; } function ondrop(index){ //ドロップを完成させます console.log( 'indexでドロップ:'、index); } function ondragend(){ draggedindex.value = null; } </script> <style> .draggable-item { パディング:10px; マージン:4px 0; 背景:#f0f0f0; カーソル:移動; } .draggable-item:Hover { 背景:#e0e0e0; } </style>
それがどのように機能するか:
-
draggable="true"
を有効にして要素をドラッグします。 -
@dragstart
:ドラッグされているインデックスを記録します。 -
@dragover.prevent
:デフォルトがドロップを許可するのを防ぎます(必須)。 -
@drop
:ロジックの並べ替えをトリガーします。 -
@dragend
:ドラッグ後にクリーンアップします。
これにより、完全に制御できますが、より多くの手動の州管理が必要です。
どのアプローチを選択しますか?
-
必要に応じて
Vue Draggable
を使用してください。- 高速開発
- マルチリストドラッグ
- アニメーションサポート
- タッチサポート(モバイル)
-
あなたの場合はネイティブAPIを使用します:
- 依存関係がゼロしたい
- 高度にカスタマイズされたドラッグ動作が必要です
- ドラッグアンドドロップがフードの下でどのように機能するかを学んでいます
両方のアプローチはVUE 3でうまく機能します。ほとんどのアプリケーションでは、 vuedraggable
時間を節約し、エッジケースを処理します。軽量または非常に特定のニーズのために、ネイティブイベントは完全に実行可能です。
基本的に、プロジェクトの範囲に適したツールを選択します。
以上がVueでドラッグアンドドロップインターフェースを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Vuenativeを使用してモバイルアプリケーションを作成することは、vue.js構文と反応性を組み合わせた構文を使用して、クロスプラットフォーム開発を実現するための効果的な方法です。 2.最初に開発環境を構成し、node.jsとexpocliをインストールし、コマンドnpxcreate-reacte-native-appmy-vue-app - templatevue-nativeを介してプロジェクトを作成します。 3.プロジェクトディレクトリを入力してnpmstartを実行し、expogoアプリケーションを介してQRコードをスキャンしてモバイルデバイスでプレビューします。 4. .VUEファイルコンポーネント、使用、構造を記述し、小文字のビュー、テキスト、ボタンなどの小文字の反応性コンポーネントの使用に注意してください

ref()を使用して、柔軟な配信を必要とする基本タイプとシナリオを処理します。 Reactive()を使用してオブジェクト状態を管理します。 refは、JSで.Valueでアクセスし、テンプレートで自動的に解放される必要があります。 Reactive()は属性に直接アクセスします。リアクティブの分解は応答性を失い、REFはそうではありません。ネストされたときにrefは自動的に開梱されます。 2つは混合できます。

VUEアプリケーションでは、VUEアプリケーションで使用されて、UIの応答性を維持するためのバックグラウンドタスクを実行します。それらは、PostMessage()とOnmessageを通じて通信し、専用と共有の2つのカテゴリに分けられ、ビッグデータ処理やリアルタイムコンピューティングなどのシナリオに適しています。それを使用する場合、ワーカーファイルを作成してコンポーネントにロードし、パス、終了、およびデータ転送の制限に注意を払う必要があります。メモリリークを避けるために、コンポーネントのアンインストールの前にワーカーを終了する必要があります。

instrylibraryusnpmoryarn.2.importlocallyincomponents foroccasionaluse.3.useapp.use()forglobalregistration ofpluginsoruilibraries.4.setupauto-importswithunplugin-auto-importandunplugin-vue-componerts forlgeulibrarys.5.enseulibrarys..

tousebootstrapwithvue、installbootstrapandoptionallybootstrapvuenextforvue-nativeComponents、importcssandjsinmain.js、およびuseclassorcomponentsintemplates.2.tousetailwindcsswithvue、instruing denditiondentendententendententendententententing.

VUE3では、ネイティブDOMイベントは、.Native Modifierを使用せずに、デフォルトでコンポーネントルート要素に直接結合します。コンポーネントが単一の要素である場合、 @clickなどの@eventで直接聞くことができます。複数のノードまたは明示的なコントロールの場合、カスタムイベントを定義し、$ EMITまたはDEFINEEMITSを使用してトリガーして、交差バージョンの互換性と明確なイベントインターフェイスを維持する必要があります。

VUEプラグインを作成して、アプリインスタンスとオプションの構成を受信するインストールメソッドを含むオブジェクトを定義します。 2。インストール方法では、$ mypropertyなどの$ mypropertyなどのグローバルプロパティを追加できます。 3。App.comPonentを使用して、MyButtonなどのグローバルコンポーネントを登録して、インポートなしでテンプレートで使用できるようにします。 4.自動フォーカスのためのVフォーカスなど、app.directiveを介してグローバル命令を定義します。 5。App.Provideを使用して注射可能なサービスを提供すると、挿入によりサブコンポーネントを取得できます。 6. APIUなどの着信オプションパラメーターをサポートします

VuedRaggableを使用して、ドラッグアンドドロップの並べ替えをすばやく実装し、ほとんどのプロジェクトに適した双方向のバインディング、アニメーション、クロスコンテナードラッグをサポートします。 2.ネイティブHTML5ドラッグアンドドロップAPIを使用して、サードパーティライブラリに依存することなく動作を完全にカスタマイズしますが、ステータスの手動管理が必要です。プロジェクトのニーズに応じて適切なソリューションを選択する必要があり、ほとんどの場合VuedRaggableが推奨され、軽量または特別なニーズはオプションでネイティブの実装で実装できます。
