So implementieren Sie verschiebbare Komponenten in Vue

So implementieren Sie verschiebbare Komponenten in Vue

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:
  • Vue macht Div-Höhe verschiebbar
  • Vue implementiert ein verschiebbares Dialogfeld
  • Beispielcode für eine schwebende, verschiebbare Vue-Schaltfläche
  • Vue implementiert die Draggable-Funktion des Element-UI-Dialogfelds
  • Implementierung des Draggable-Effekts der El-Dialog-Komponente im Vue-Projekt

<<:  Detaillierte Erläuterung der Verwendung des Linux-Zeitbefehls

>>:  MySQL-Paging-Abfragemethode für Millionen von Datenmengen und ihre Optimierungsvorschläge

Artikel empfehlen

Der Einsatz von MySQL Triggern und worauf zu achten ist

Inhaltsverzeichnis Über Trigger Verwendung von Tr...

So verwenden Sie den Nginx-Proxy zum Surfen im Internet

Normalerweise verwende ich nginx als Reverse-Prox...

Beispielcode für mehrere Elementtabellen, um synchrones Scrollen zu erreichen

Element UI implementiert mehrere Tabellen, die gl...

So übertragen Sie Dateien zwischen Docker-Container und lokalem Computer

Zum Übertragen von Dateien zwischen dem Host und ...

Zusammenfassung zur Verwendung von MySQL-Isolationsspalten und Präfixindizes

Inhaltsverzeichnis Datenspalten isolieren Präfixi...

MySQL-Anweisungsanordnung und zusammenfassende Einführung

SQL-Anweisungen (Structured Query Language), also...

Implementierung des Nginx Intranet Standalone Reverse Proxy

Inhaltsverzeichnis 1 Nginx Installation 2 Nginx k...

Ubuntu 18.04 installiert MySQL 5.7.23

Ich habe MySQL zuvor problemlos in Ubuntu 16.04 i...

Detaillierte Diskussion zum Thema mysqldump-Datenexport

1. Bei der Verwendung von mysqldump wird ein Fehl...