In diesem Artikel wird hauptsächlich die einfache Implementierung von Vue Drag & Drop wie folgt vorgestellt: Rendern Es werden keine Duplikate festgestellt und alte Daten nicht gelöscht. Datenkörper <MyShuttle:dataOrigin='[ { Name: "Daten 001", ID: "Nummer 001", }, { Name: "Daten 002", ID: "Nummer 001", }, { Name: "Daten 003", ID: "Nummer 001", }]' :Leerzeichen='[{ Name:"Rechts 001", ID:"Rechts 001", }]' /> Code draggable Draggable aktivieren @dragenter.prevent @dragover.prevent // Verhindern Sie, dass der Browser dieses Verhalten standardmäßig verwendet, da sonst ein Kreuz angezeigt wird, was nicht schön ist. Verhindern von Standardverhalten @dragleave.stop="dragleave($event, 'main')" Das Betreten und Verlassen des aktuellen Elements löst @dragend.stop="dragEnd($event, item)" Den Drag-Content-Trigger löschen Ziehen von Ereignissen und Eigenschaften Markieren Sie „Das ist sehr wichtig!!!“ Dadurch wird das Verhalten des Drag-Ereignisses bestimmt. Wenn Sie mit dem Ziehen beginnen, wird die Stelle, auf die Sie mit der Maus geklickt haben, als Markierung verwendet. H5 Drag-Attribut ziehbar draggable: Wenn ein Element ziehbar sein muss, muss es auf true gesetzt werden. Der Standardwert ist false. Ausgewählte Texte, Bilder und Links können standardmäßig gezogen werden. Wenn die Maus zum Ziel-Div-Feld bewegt wird, wird es hinzugefügt. Das einfache Beispiel kann das Problem am besten veranschaulichen. <Vorlage> <div Klasse="MeinShuttle"> <div Klasse="MeinShuttleLeft"> <div class="title">Datenquelle</div> <div Klasse = "dataBox" @dragleave.stop = "dragleave($event, 'main')"> <div v-for="(item, i) in dataOrigin" :key="i" class="dataList" ziehbar @dragenter.prevent @dragover.prevent @dragstart.stop="dragstart($event, item)" @dragend.stop="dragEnd($event, item)"> {{ item.Name}} </div> </div> </div> <div Klasse="MyShuttleCenter"></div> <div Klasse="MeinShuttleRechts"> <div class="title">Datenquelle</div> <div ref="MyShuttleRight" class="dataBox"> <div v-for="(item, i) in spaceList" :key="i" class="dataList" ziehbar @dragenter.prevent @dragover.prevent> {{ item.Name}} </div> </div> </div> </div> </Vorlage> <Skript> Standard exportieren { Name: '', Komponenten: {}, Requisiten: { Datenursprung: { Typ: Array }, Raum: { Typ: Array } }, Daten() { zurückkehren { Raumliste: dieser.Raum, isDragStatus: false } }, berechnet: {}, betrachten: {}, erstellt() { }, montiert() { }, Methoden: { dragleave(e, Element) { // konsole.log(e, Element) wenn (Element === 'Haupt') { this.isDragStatus = true } anders { this.isDragStatus = false } // konsole.log(dies.istDragStatus) }, dragstart(e, Element) { // konsole.log(e, Element) }, dragEnd(e, Element) { const top = this.$refs.MyShuttleRight.getBoundingClientRect().top const right = this.$refs.MyShuttleRight.getBoundingClientRect().right const bottom = this.$refs.MyShuttleRight.getBoundingClientRect().bottom const left = this.$refs.MyShuttleRight.getBoundingClientRect().left console.log(oben, rechts, unten, links) console.log(e.clientX, e.clientY, Element) if (this.isDragStatus && e.clientY > oben && e.clientY < unten && e.clientX > links && e.clientX < rechts) { this.spaceList.push(Element) Konsole.log(diese.spaceList.indexOf(Element)) } } } } </Skript> <style scoped lang="scss"> .MeinShuttle { Breite: 100 %; Höhe: 308px; Anzeige: Flex; Inhalt ausrichten: Abstand dazwischen; // Gemeinsamer Stil für linke und rechte Boxen.MyShuttleLeft, .MeinShuttleRechts { Rand: 1px durchgezogen #dddddd; Rahmen-Zusammenbruch: Zusammenbruch; .Titel { Box-Größe: Rahmenbox; Breite: 100 %; Höhe: 40px; Hintergrund: #f5f5f5; Rahmenradius: 4px 4px 0px 0px; Rahmen unten: 1px durchgezogen #dddddd; Polsterung: 10px 16px; Schriftgröße: 14px; Schriftfamilie: PingFangSC-Regular, PingFang SC; Schriftstärke: 400; Farbe: #333333; Zeilenhöhe: 20px; } .dataBox { Breite: 100 %; Höhe: 228px; Überlauf: automatisch; Polsterung: 6px 0; .Datenliste { Breite: 96%; Höhe: 40px; Box-Größe: Rahmenbox; Schriftgröße: 14px; Schriftfamilie: PingFangSC-Regular, PingFang SC; Schriftstärke: 400; Farbe: #666; Zeilenhöhe: 20px; Rand: 0,2 % 10px; Polsterung: 10px 16px; Rand: 1px durchgezogen #ddd; Rahmenradius: 4px; Benutzerauswahl: keine; Cursor: Zeiger; &:schweben { Farbe: #01bc77; Hintergrund: rgba(1, 188, 119, 0,1); } } } } .MeinShuttleLeft { Breite: 362px; Höhe: 100%; Hintergrund: #ffffff; Rahmenradius: 4px; } .MyShuttleCenter { Breite: 64px; Höhe: 100%; } .MeinShuttleRechts { Breite: 362px; Höhe: 100%; Hintergrund: #ffffff; Rahmenradius: 4px; } } </Stil> Dies ist das Ende dieses Artikels über die einfache Implementierung der Vue-Drag-and-Drop-Ergänzung. Weitere relevante Inhalte zur Vue-Drag-and-Drop-Ergänzung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Das Laufschrift-Tag in HTML erzielt einen nahtlosen Laufschrift-Effekt
>>: Erfahren Sie mehr über MySQL-Datenbanken
In HTML-Seiten müssen wir manchmal automatisch ein...
Plätzchen Dies ist eine Standardmethode zum Speic...
Nginx Rewrite-Nutzungsszenarien 1. Sprung der URL...
[LeetCode] 183.Kunden, die nie bestellen Angenomm...
Inhaltsverzeichnis Installation des ESLint-Plugin...
In diesem Artikelbeispiel wird der spezifische Co...
Es gibt die folgenden vier häufig verwendeten Met...
VMware-Workstations starten den virtuellen Maschi...
Vorwort Es gibt ein Szenario, in dem das Unterneh...
Inhaltsverzeichnis Überblick Virtueller Dom Prinz...
Vue-Router-Übergänge sind eine schnelle und einfa...
Inhaltsverzeichnis Erster Schritt der Installatio...
Es ist sehr einfach, Daten und Tabellen in MySQL ...
Dieser Artikel zeigt Ihnen, wie Sie mit CSS eine ...
(1) HTML: HyperText Markup Language, die im Wesen...