In diesem Artikel erfahren Sie, wie Sie ziehbare und verschiebbare Komponenten in Vue implementieren. Der spezifische Inhalt ist wie folgt beschreiben:Die Komponente kapselt nur die Drag-Funktion und der Inhalt wird über die Slots #header, #default und #footer angepasst. Wirkung:Code:<Vorlage> <div ref="Verpackung" Klasse = "Drag-Bar-Wrapper" > <div ref="Überschrift" Klasse = "Drag-Bar-Header" > <!-- Kopfbereich --> <slot name="header" /> </div> <div Klasse="Drag-Bar-Inhalt"> <!-- Hauptinhaltsbereich --> <slot name="Standard" /> </div> <div Klasse="Drag-Bar-Fußzeile"> <!-- Unterer Bereich --> <slot name="Fußzeile" /> </div> </div> </Vorlage> <Skript> Standard exportieren { Daten() { zurückkehren { wrapperDom: null, headerDom: null, disX: 0, disY: 0, minLinks: 0, maxLinks: 0, minTop: 0, maxTop: 0, vorherigeLinks: 0, vorherigerTop: 0, }; }, Methoden: { initDrag() { dies.wrapperDom = dies.$refs.wrapper; dies.headerDom = dies.$refs.header; this.headerDom.addEventListener('mousedown', this.onMousedown, false);//Klicken Sie auf den Kopfbereich und ziehen Sie}, bei Mausklick(e) { this.disX = e.clientX - this.headerDom.offsetLeft; this.disY = e.clientY - this.headerDom.offsetTop; dies.minLeft = dies.wrapperDom.offsetLeft; dies.minTop = dies.wrapperDom.offsetTop; dies.maxLeft = Fenster.innereBreite – dies.minLeft – dies.wrapperDom.offsetWidth; dies.maxTop = Fenster.innereHöhe – dies.minTop – dies.wrapperDom.offsetHeight; const { links, oben } = getComputedStyle(this.wrapperDom, false); dies.prevLeft = parseFloat(links); dies.prevTop = parseFloat(oben); document.addEventListener('mousemove', this.onMousemove, false); document.addEventListener('mouseup', this.onMouseup, false); document.body.style.userSelect = 'none'; //Beseitigt die Störung des ausgewählten Textes beim Ziehen}, beiMausbewegung(e) { lass links = e.clientX - this.disX; let top = e.clientY - this.disY; wenn (-links > dies.minLinks) { links = -this.minLeft; } sonst wenn (links > this.maxLeft) { links = dies.maxLeft; } wenn (-top > dies.minTop) { oben = -this.minTop; } sonst wenn (oben > dies.maxTop) { oben = dies.maxTop; } dies.wrapperDom.style.left = dies.prevLeft + left + 'px'; dies.wrapperDom.style.top = dies.prevTop + top + 'px'; }, bei Mauszeigerhoch() { document.removeEventListener('mousemove', this.onMousemove, false); document.removeEventListener('mouseup', this.onMouseup, false); document.body.style.userSelect = 'auto'; //Text wiederherstellen, sodass er auswählbar ist}, }, montiert() { dies.initDrag(); } }; </Skript> <Stilbereich> .drag-bar-wrapper { Position: fest; Z-Index: 2; oben: 50 %; links: 50%; transformieren: übersetzen(-50 %, -50 %); Anzeige: Flex; Flex-Richtung: Spalte; } .drag-bar-header { Hintergrundfarbe: #eee; Cursor: bewegen; /*Mausstil ziehen*/ } .drag-bar-content { Hintergrundfarbe: #fff; } .drag-bar-footer { Hintergrundfarbe: #fff; } </Stil> Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung der Verwendung des Linux-Zeitbefehls
>>: MySQL-Paging-Abfragemethode für Millionen von Datenmengen und ihre Optimierungsvorschläge
Inhaltsverzeichnis Über Trigger Verwendung von Tr...
Inhaltsverzeichnis Matlab-Centroid-Algorithmus Da...
Code kopieren Der Code lautet wie folgt: <!DOC...
Normalerweise verwende ich nginx als Reverse-Prox...
Element UI implementiert mehrere Tabellen, die gl...
Zum Übertragen von Dateien zwischen dem Host und ...
Ich habe bereits einige Nachforschungen zum Thema...
Inhaltsverzeichnis Datenspalten isolieren Präfixi...
Frage Unter LINUX werden periodische Aufgaben nor...
SQL-Anweisungen (Structured Query Language), also...
Vorwort Hallo zusammen, ich bin Liang Xu. Bei der...
Experimentelle Umgebung: MySQL 5.7.22 Binäres Log...
Inhaltsverzeichnis 1 Nginx Installation 2 Nginx k...
Ich habe MySQL zuvor problemlos in Ubuntu 16.04 i...
1. Bei der Verwendung von mysqldump wird ein Fehl...