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 Lösung 1 Lösung 2 Beim Erstell...
<br />Gestern habe ich beim W3C gesehen, das...
JS berechnet den Gesamtpreis der Waren im Warenko...
Ich habe vor Kurzem Ubuntu 20.04 installiert und ...
Installationsumgebung: CentOS7 64-Bit-Mini-Versio...
Die Beziehung zwischen Tomcat-Protokollen Ein Bil...
Die verständlichste Erklärung des Genauigkeitspro...
In diesem Artikel wird der spezifische Code von V...
Schreibgeschützte und deaktivierte Attribute in F...
In diesem Artikelbeispiel wird der spezifische Co...
Ich habe kürzlich an einem Projekt gearbeitet und...
Sie wissen vielleicht bereits, dass die Länge 1 v...
Inhaltsverzeichnis So stellen Sie den MySQL-Diens...
Plugin zum Umschreiben von Abfragen Ab MySQL 5.7....
Es gibt drei Arten von virtuellen Hosts, die von ...