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

So führen Sie Linux-Shell-Befehle in Docker aus

Um einen Shell-Befehl in Docker auszuführen, müss...

Implementierungsschritte zum Erstellen eines lokalen Webservers auf Centos8

1 Übersicht System CentOS8, verwenden Sie httpd, ...

CSS-Beispielcode zur Implementierung von Schiebetüren

Durch die sogenannte Sliding Door-Technologie läs...

So generieren Sie eine Vue-Benutzeroberfläche per Drag & Drop

Inhaltsverzeichnis Vorwort 1. Technisches Prinzip...

So implementieren Sie den Selbststart eines Docker-Containers

Container-Autostart Docker bietet einen Neustartr...

So überwachen Sie den Linux-Serverstatus

Wir, insbesondere Linux-Ingenieure, haben täglich...

Hinweise zur Groß-/Kleinschreibung bei MySQL

Inhaltsverzeichnis Die Groß-/Kleinschreibung von ...

MySQL-Konfiguration SSL-Master-Slave-Replikation

MySQL5.6 So erstellen Sie SSL-Dateien Offizielle ...

Mysql-Datenbankdesign - Analyse von drei Paradigmenbeispielen

Drei Paradigmen 1NF: Felder sind untrennbar; 2NF:...