Heim  >  Artikel  >  Web-Frontend  >  Ein Beispiel erklärt, wie man mit vue eine Sidebar-Drag-Funktion implementiert

Ein Beispiel erklärt, wie man mit vue eine Sidebar-Drag-Funktion implementiert

PHPz
PHPzOriginal
2023-04-07 09:31:541284Durchsuche

Vue ist ein beliebtes JavaScript-Framework, mit dem Entwickler schnell moderne, reaktionsfähige Webanwendungen erstellen können. Eine der sehr interessanten Funktionen ist das Ziehen der Seitenleiste, eine sehr beliebte und praktische Funktion. In diesem Artikel wird erläutert, wie Sie das Ziehen der Seitenleiste mit Vue implementieren.

Zuerst müssen Sie Vue.js installieren. Sie können es mit npm oder Yarn installieren und Vue.js in das Projekt einführen:

<script src="https://cdn.jsdelivr.net/npm/vue"></script>

In Vue.js können Sie Komponenten definieren und den Code für das Ziehen in der Seitenleiste schreiben in den Komponenten. In diesem Beispiel erstellen wir eine Komponente namens DragSidebar. In der DragSidebar-Komponente müssen zwei Dateneigenschaften definiert werden: Dragging und MouseX. Dragging gibt an, ob die Seitenleiste gezogen wird, und MouseX gibt die X-Koordinate der Maus an.

<template>
  <div class="drag-container">
    <div class="sidebar" :style="{ transform: translate }" @mousedown="mousedown"
         @mouseup="mouseup" @mousemove="mousemove">
      <div class="content">
        <slot></slot>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dragging: false,
      mouseX: 0,
      sidebarX: 0
    }
  },
  computed: {
    translate() {
      return `translate3d(${this.sidebarX}px, 0, 0)`
    }
  },
  methods: {
    mousedown(event) {
      this.dragging = true
      this.mouseX = event.clientX
    },
    mouseup() {
      this.dragging = false
    },
    mousemove(event) {
      if (this.dragging) {
        const diff = event.clientX - this.mouseX
        this.sidebarX += diff
        this.mouseX = event.clientX
      }
    }
  }
}
</script>

<style scoped>
.drag-container {
  display: flex;
  align-items: stretch;
  height: 100vh;
  overflow: hidden;
}

.sidebar {
  width: 320px;
  min-width: 320px;
  height: 100%;
  background-color: #F2F2F2;
  transition: transform .3s ease;
}

.content {
  padding: 24px;
}
</style>

Im obigen Code haben wir drei Methoden definiert: Mousedown, Mouseup und Mousemove, die jeweils das Drücken, Loslassen und Bewegen der Maus verarbeiten. In Mousedown setzen wir die Dragging-Eigenschaft auf true, was bedeutet, dass die Seitenleiste mit dem Ziehen beginnt und die X-Koordinate der Maus aufgezeichnet wird. In Mouseup setzen wir die Dragging-Eigenschaft auf „false“, was bedeutet, dass die Seitenleiste nicht mehr gezogen wird. Bei Mousemove passen wir die Position der Seitenleiste basierend darauf an, wie weit sich die Maus bewegt hat.

Schließlich verwenden wir die DragSidebar-Komponente in der übergeordneten Komponente und fügen zum Testen einige untergeordnete Komponenten hinzu. Möglicherweise müssen Sie einige CSS-Stile selbst hinzufügen, um Ihren Projektanforderungen gerecht zu werden.

<template>
  <div class="app">
    <drag-sidebar>
      <h1>Title</h1>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      <p>Suspendisse consectetur pharetra ante sit amet bibendum.</p>
    </drag-sidebar>
    <div class="main">
      <h1>Main content</h1>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      <p>Suspendisse consectetur pharetra ante sit amet bibendum.</p>
    </div>
  </div>
</template>

<script>
import DragSidebar from './components/DragSidebar.vue'

export default {
  components: {
    DragSidebar
  }
}
</script>

<style>
.app {
  height: 100vh;
  display: flex;
}

.main {
  flex-grow: 1;
  padding: 24px;
}
</style>

Hier geht es um die Verwendung von Vue zum Implementieren des Ziehens in der Seitenleiste. Mit den oben genannten Schritten können Sie schnell ein praktisches Ziehen in der Seitenleiste implementieren.

Das obige ist der detaillierte Inhalt vonEin Beispiel erklärt, wie man mit vue eine Sidebar-Drag-Funktion implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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