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

Installation von VMware Workstation unter Linux (Ubuntu)

Wenn Sie nicht wissen, wie das System auf dem Com...

Beispielcode zum Hervorheben von Suchbegriffen im WeChat-Miniprogramm

1. Einleitung Wenn Sie im Projekt auf eine Anford...

Die HTML-Eingabedateisteuerung begrenzt den Typ der hochgeladenen Dateien

Fügen Sie der Webseite ein HTML-Steuerelement für...

Detaillierte Erläuterung des MySQL-Download- und Installationsprozesses

1: MySql herunterladen Offizielle Download-Adress...

Detaillierte Erklärung von Prototypen und Prototypenketten in JavaScript

Inhaltsverzeichnis Prototyp-Kettendiagramm Grundl...

Detaillierte Erklärung und Zusammenfassung der URL zur Datenbankverbindung

Detaillierte Erklärung und Zusammenfassung der UR...

Forschung zur Größe von Webseiten

<br />Statistiken zufolge hat sich die durch...

Ein Leitfaden zur Optimierung leistungsstarker Websites

Goldene Regeln der Leistung: Nur 10 bis 20 % der ...

Erläuterung der Dockerfile-Anweisungen und der grundlegenden Struktur

Durch die Verwendung von Dockerfile können Benutz...