Vue を使用して画像のドラッグ アンド ドロップと並べ替え機能を実装するにはどうすればよいですか?
Vue は、人気のある JavaScript フレームワークとして、ユーザー インターフェイスを処理するための強力な機能を提供します。この記事では、Vue を使用して画像のドラッグと並べ替え機能を実装する方法を学びます。
まず、Vue をインストールし、Vue インスタンスを作成する必要があります。次のコマンドで Vue をインストールできます:
npm install vue
次に、HTML ファイルを作成し、Vue の依存関係を導入し、Vue インスタンスを作成します:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Drag and Sort Images</title> <script src="https://cdn.jsdelivr.net/npm/vue"></script> </head> <body> <div id="app"> <div class="image-container"> <div class="image-card" v-for="(image, index) in images" :key="index" :style="{left: image.x + 'px', top: image.y + 'px'}" @mousedown="startDrag(index)" @mouseup="stopDrag(index)" @mousemove="drag(index)"> <img :src="image.src" alt="Image"> </div> </div> </div> <script> new Vue({ el: '#app', data: { images: [ { src: 'image1.jpg', x: 0, y: 0 }, { src: 'image2.jpg', x: 0, y: 0 }, { src: 'image3.jpg', x: 0, y: 0 }, { src: 'image4.jpg', x: 0, y: 0 } ], dragging: false, draggedIndex: -1, initialX: 0, initialY: 0 }, methods: { startDrag(index) { this.dragging = true; this.draggedIndex = index; this.initialX = event.clientX; this.initialY = event.clientY; }, stopDrag(index) { if (this.dragging && this.draggedIndex !== -1) { this.images.splice(index, 0, this.images.splice(this.draggedIndex, 1)[0]); } this.dragging = false; this.draggedIndex = -1; }, drag(index) { if (this.dragging && this.draggedIndex !== -1) { const dx = event.clientX - this.initialX; const dy = event.clientY - this.initialY; this.images[index].x += dx; this.images[index].y += dy; this.initialX = event.clientX; this.initialY = event.clientY; } } } }); </script> </body> </html>
上記のコードはドラッグ アンド ドロップ画像を作成します仕分け機能を備えたコンテナ。 v-for
ディレクティブを使用して images
配列を反復処理し、v-bind
ディレクティブを使用して各画像の位置を CSS スタイルにバインドします。
Vue インスタンスの data
属性で、images
配列を定義します。各要素には src
、x## が含まれます #および
y 属性。
dragging、
draggedIndex、
initialX、および
initialY プロパティは、ドラッグのステータスと初期位置を追跡するために使用されます。
startDrag メソッドは、マウスが押されたときのドラッグ状態を設定し、初期位置を記録します。
stopDrag メソッドは、マウスが放されるとドラッグを停止し、ドラッグされた位置に従って配列を並べ替えます。
drag メソッドは、マウスが移動すると画像の位置を更新します。
drag メソッドを次のように変更します。
drag(index) { if (this.dragging && this.draggedIndex !== -1) { const dx = event.clientX - this.initialX; const dy = event.clientY - this.initialY; const container = document.querySelector('.image-container'); const containerRect = container.getBoundingClientRect(); const imageRect = event.target.getBoundingClientRect(); if ( imageRect.left + dx >= containerRect.left && imageRect.right + dx <= containerRect.right && imageRect.top + dy >= containerRect.top && imageRect.bottom + dy <= containerRect.bottom ) { this.images[index].x += dx; this.images[index].y += dy; this.initialX = event.clientX; this.initialY = event.clientY; } } }
以上がVue を介して画像のドラッグ アンド ドロップと並べ替え機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。