Heim > Web-Frontend > View.js > Wie implementiert man ein ziehbares Layout in Vue?

Wie implementiert man ein ziehbares Layout in Vue?

WBOY
Freigeben: 2023-06-25 08:48:33
Original
7899 Leute haben es durchsucht

Mit der kontinuierlichen Weiterentwicklung der Web-Frontend-Technologie beginnen immer mehr Entwickler, die SPA-Architektur (Single Page Application) zum Erstellen von Anwendungen zu verwenden. Als eines der derzeit beliebtesten Web-Frontend-Frameworks bietet Vue eine umfangreiche Komponentenbibliothek und Tools, die die Erstellung von SPA-Anwendungen erleichtern. Vue bietet auch einige praktische Lösungen für die Implementierung ziehbarer Layouts.

1. Vue-Grid-Layout verwenden

Vue-Grid-Layout ist ein responsives Grid-Layout-System, das auf Vue basiert. Es bietet eine Reihe von Komponenten, mit denen Sie ganz einfach ziehbare und in der Größe veränderbare Rasterlayouts implementieren können und gleichzeitig das Ziehen und Zoomen mit Gesten auf Mobilgeräten unterstützen. Die Verwendung von Vue-Grid-Layout ist sehr einfach. Sie müssen es zuerst in das Projekt einführen:

npm install vue-grid-layout -S
Nach dem Login kopieren

Dann verwenden Sie es in der Vue-Komponente, wie unten gezeigt:

<template>
  <vue-grid-layout :layout="layout" :col-num="12" :row-height="30" :is-draggable="true"
                   :is-resizable="true" :vertical-compact="false" :margin="[10, 10]"
                   :use-css-transforms="true" :auto-size="true">
    <vue-grid-item v-for="item in layout" :key="item.i" :x="item.x" :y="item.y" :w="item.w"
                   :h="item.h">
      <div class="grid-item-content">{{ item.i }}</div>
    </vue-grid-item>
  </vue-grid-layout>
</template>
<script>
import { VueGridLayout, VueGridItem } from 'vue-grid-layout';

export default {
  components: { VueGridLayout, VueGridItem },
  data() {
    return {
      layout: [
        { i: 'item1', x: 0, y: 0, w: 1, h: 2 },
        { i: 'item2', x: 1, y: 0, w: 1, h: 2 },
        { i: 'item3', x: 2, y: 0, w: 1, h: 2 },
        { i: 'item4', x: 3, y: 0, w: 1, h: 2 },
      ]
    }
  },
}
</script>
Nach dem Login kopieren

Im obigen Code definieren wir eine VueGridLayout-Komponente und fügen sie hinzu Das Layout-Array. Jedes Element ist an seine Layout-Eigenschaft gebunden und stellt ein Rasterelement dar, einschließlich seiner ID (i), x- und y-Koordinaten sowie Breite (w) und Höhe (h). Wir können auch das col-num-Attribut festlegen, um die Anzahl der Spalten im Raster anzugeben, das row-height-Attribut, um die Höhe jeder Zeile festzulegen, und die is-dragable- und is-resizable-Attribute, um anzugeben, ob die Rasterelemente ziehbar sind bzw. in der Größe veränderbar. Vue-Grid-Layout bietet außerdem verschiedene Anpassungsmöglichkeiten, die je nach Bedarf konfiguriert werden können.

2. Verwenden Sie Vue-Draggable

Vue-Draggable ist ein weiteres beliebtes Vue-Plug-in, mit dem Sie ziehbare Listen in Vue implementieren können, z. B. Drag-and-Drop-Sortierung, Drag-and-Drop zum Ändern des übergeordneten Elements, usw. Es eignet sich sehr gut für die Implementierung eines Drag-and-Drop-Aufgabenpanels ähnlich wie Trello. Die Verwendung von Vue-Draggable ist ebenfalls sehr einfach. Sie müssen es auch zuerst einführen:

npm install vuedraggable --save
Nach dem Login kopieren

Dann verwenden Sie es in der Vue-Komponente, wie unten gezeigt:

<template>
  <draggable v-model="list" :options="dragOptions">
    <div v-for="(item, index) in list" :key="item.id">
      <h3 class="title">{{ item.title }}</h3>
      <p class="content">{{ item.content }}</p>
    </div>
  </draggable>
</template>
<script>
  import draggable from 'vuedraggable';

  export default {
    components: { draggable },
    data() {
      return {
        list: [
          { id: 1, title: 'Title 1', content: 'Content 1' },
          { id: 2, title: 'Title 2', content: 'Content 2' },
          { id: 3, title: 'Title 3', content: 'Content 3' },
          { id: 4, title: 'Title 4', content: 'Content 4' },
          { id: 5, title: 'Title 5', content: 'Content 5' },
        ],
        dragOptions: {
          group: {
            name: 'task',
            pull: 'clone',
            put: false
          },
          sort: false,
          animation: 150,
        },
      }
    },
  }
</script>
Nach dem Login kopieren

Im obigen Code definieren wir eine ziehbare Komponente und binden das Listenarray In seinem V-Modell stellt jedes Element ein Listenelement dar, einschließlich seiner ID, seines Titels und seines Inhalts. Über das Optionsattribut können wir auch verschiedene benutzerdefinierte Optionen festlegen, z. B. das Gruppenattribut zum Festlegen der Drag-and-Drop-Gruppierung, das Sortierattribut zum Festlegen, ob die Sortierung aktiviert ist, das Animationsattribut zum Festlegen der Animationsdauer usw.

Zusammenfassung

Es ist üblich, Vue zum Implementieren eines ziehbaren Layouts zu verwenden. Vue-Grid-Layout und Vue-Draggable sind zwei gute Lösungen. Vue-Grid-Layout eignet sich für das Rasterlayout. Es kann ein ziehbares und in der Größe veränderbares Rasterlayout realisieren und eignet sich zum Erstellen verschiedener komplexer interaktiver Anwendungen. Vue-Draggable wird hauptsächlich für Drag-and-Drop-Listen verwendet und ist sehr effektiv bei der Implementierung von Drag-and-Drop-Aufgabenpanels wie Trello. Die Wahl der richtigen Lösung hängt vom konkreten Anwendungsfall ab, beide sind einfach und flexibel einsetzbar.

Das obige ist der detaillierte Inhalt vonWie implementiert man ein ziehbares Layout in Vue?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage