So kapseln Sie die Karussellkomponente in Vue3

So kapseln Sie die Karussellkomponente in Vue3

Zweck

Kapseln Sie die Karussellkomponente und verwenden Sie sie direkt. Der spezifische Inhalt ist wie folgt

Allgemeine Schritte

  • Bereiten Sie das grundlegende Layout der My-Carousel-Komponente vor und registrieren Sie es global
  • Bereiten Sie die Home-Banner-Komponente vor, verwenden Sie die My-Carousel-Komponente und registrieren Sie sie auf der Startseite.
  • Deep-Scope-Selektoren überschreiben die Standardstile der My-Carousel-Komponente
  • Holen Sie sich die Karusselldaten in der Home-Banner-Komponente und übergeben Sie sie an die My-Carousel-Komponente.
  • Wenn die Komponente „my-carousel“ mit dem Rendern fertig ist
  • Autoplay, das Autorotate-Attribut freigeben, auf automatische Drehung einstellen
  • Bei automatischer Wiedergabe: eingeben, verlassen, pausieren, starten
  • Blinkerschalter, Zurück, Weiter
  • Komponenten zerstören und Timer bereinigen

Landecode

1. Verpackungskomponenten

<Vorlage>
  <div Klasse="mein-Karussell" @mouseenter="Stopp" @mouseleave="Start">
    <ul Klasse="Karussell-Body">
      <li v-for="(item, i) in findBannerList" :key="item.id" class="carousel-item" :class="{ fade: index === i }">
        <RouterLink zu="/">
          <img :src="item.imgUrl" alt="Bild" />
        </RouterLink>
      </li>
    </ul>
    <a @click="clickFn(-1)" href="javascript:;"
    <a @click="clickFn(1)" href="javascript:;" Klasse="carousel-btn next"><i Klasse="iconfont icon-angle-right"></i></a>
    <div Klasse="Karussell-Anzeige">
      <span @click="active(i)" v-for="(item, i) in findBannerList" :key="i" :class="{ active: index === i }"></span>
    </div>
  </div>
</Vorlage>

<Skript>
importiere { onUnmounted, ref, watch } von 'vue'
Standard exportieren {
  Name: 'Karussell',
  Requisiten: {
    findBannerList: {
      Typ: Array,
      Standard: () => []
    },
    Autoplay:
      Typ: Boolean,
      Standard: true
    },
    Dauer: {
      Typ: Nummer,
      Standard: 3
    }
  },
  setup(Requisiten) {
    konstanter Index = ref(0)
    // Definieren Sie einen konstanten Speichertimer const timer = ref(null)
    // Timermethode zum Erreichen eines automatischen Karusselleffekts const autoplayFn = () => {
      // Anti-Shake, um mehrfaches Auslösen des Timers zu verhindern clearInterval(timer.value)
      timer.value = setzeIntervall(() => {
        index.wert += 1
        wenn (index.wert >= props.findBannerList.länge) {
          Indexwert = 0
        }
      }, Eigenschaften.Dauer * 1000)
    }
    // Listener, basierend auf den von der Schnittstelle zurückgegebenen Daten und den übergebenen zugehörigen Attributparametern startet Autoplay das Karussell // Hören Sie auf die Länge der zurückgegebenen Daten. Wenn die Länge größer als 1 ist und Autoplay wahr ist, starten Sie das Karussell.
      () => props.findBannerList,
      () => {
        wenn (props.findBannerList.length > 1 und props.autoplay) {
          autoplayFn()
        }
      }
    )
    // Bewegen Sie die Maus in das Karussell, um die automatische Wiedergabe zu stoppen const stop = () => {
      wenn (Timer.Wert) ClearInterval(Timer.Wert)
    }
    // Bewegen Sie die Maus aus dem Karussell und starten Sie den Timer const start = () => {
      wenn (props.findBannerList.length > 1 und props.autoplay) {
        autoplayFn()
      }
    }
    // Klicken Sie auf die linken und rechten Schaltflächen auf dem Karussell, um das Karussell zu wechseln. Die übergebenen Parameter bestimmen, ob sich das Karussell nach links oder rechts bewegt. const clickFn = e => {
      index.wert += e
      wenn (index.wert >= props.findBannerList.länge) {
        index.wert = 0
      }
      wenn (Indexwert < 0) {
        index.value = props.findBannerList.length - 1
      }
    }
    // Klicken Sie auf den Indikator (den kleinen Punkt unter dem Karussell), um das Karussell umzuschalten const active = e => {
      index.wert = e
    }
    //Liebesbrief-Timer, wenn Komponente zerstört wird, um Leistungsverlust zu vermeiden onUnmounted(() => {
      wenn (Timer.Wert) ClearInterval(Timer.Wert)
    })
    return { index, stop, start, clickFn, aktiv }
  }
}
</Skript>
<style scoped lang="weniger">
.mein-Karussell {
  Breite: 100 %;
  Höhe: 100%;
  Mindestbreite: 300px;
  Mindesthöhe: 150px;
  Position: relativ;
  .Karussell {
    &-Körper {
      Breite: 100 %;
      Höhe: 100%;
    }
    &-Artikel {
      Breite: 100 %;
      Höhe: 100%;
      Position: absolut;
      links: 0;
      oben: 0;
      Deckkraft: 0;
      Übergang: Deckkraft 0,5 s linear;
      &.verblassen {
        Deckkraft: 1;
        Z-Index: 1;
      }
      img {
        Breite: 100 %;
        Höhe: 100%;
      }
    }
    &-Indikator {
      Position: absolut;
      links: 0;
      unten: 20px;
      Z-Index: 2;
      Breite: 100 %;
      Textausrichtung: zentriert;
      Spanne {
        Anzeige: Inline-Block;
        Breite: 12px;
        Höhe: 12px;
        Hintergrund: rgba(0, 0, 0, 0,2);
        Randradius: 50 %;
        Cursor: Zeiger;
        ~ Spanne {
          Rand links: 12px;
        }
        &.aktiv {
          Hintergrund: #fff;
        }
      }
    }
    &-btn {
      Breite: 44px;
      Höhe: 44px;
      Hintergrund: rgba(0, 0, 0, 0,2);
      Farbe: #fff;
      Randradius: 50 %;
      Position: absolut;
      oben: 228px;
      Z-Index: 2;
      Textausrichtung: zentriert;
      Zeilenhöhe: 44px;
      Deckkraft: 0;
      Übergang: alle 0,5 s;
      &.vorherige {
        links: 20px;
      }
      &.nächste {
        rechts: 20px;
      }
    }
  }
  &:schweben {
    .Karussell-btn {
      Deckkraft: 1;
    }
  }
}
</Stil>

2. Verpacken in Plugins

importiere MyCarousel aus „./my-carousel.vue“
Standard exportieren {
  installieren(App) {
    app.component(MeinKarussell.name, MeinKarussell)
  }
}

3. Globale Registrierung in der Eintragsdatei main.js

importiere { createApp } von 'vue'
App aus „./App.vue“ importieren
importiere MyUI aus „./components/library“

// Um ​​das Plugin zu verwenden, verwenden Sie app.use(plugin) in main.js
erstelleApp(App).verwenden(MyUI).mount('#app')

4. Verwenden von Komponenten in Ihrem Projekt

Bereiten Sie die Home-Banner-Komponente vor, verwenden Sie die My-Carousel-Komponente und führen Sie dann die Home-Banner-Komponente dort ein, wo das Karussell im Projekt verwendet wird. Die folgenden Parameter können in der Home-Banner-Komponente festgelegt werden

Der Parameter findBannerList wird als Hintergrundanforderungsdaten verwendet, die an die Komponente übergeben werden sollen.

Ob der Autoplay- Parameter das Karussell aktiviert. Der Standardwert ist true. Aktivieren Sie das Karussell.

Der Dauerparameter ist das Zeitintervall des Karussells in Sekunden.

<Vorlage>
  <div Klasse="Home-Banner">
    <MyCarousel :findBannerList="findBannerList" :autoplay="true" :duration="3" />
  </div>
</Vorlage>

Zusammenfassen

Folgen Sie einfach den Ideen und Schritten und setzen Sie sie Schritt für Schritt um.

1. Grundlegende Komponentenaufteilung und -anordnung
2. Automatisches Karussell
3. Hover-Steuerung zum Starten und Stoppen
4. Manuelle Steuerungsumschaltung
5. Zerstöre den Timer
6. Relevante Parameter extrahieren

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:
  • Vue3.0 handgeschriebener Karusselleffekt
  • Vue+Rem benutzerdefinierter Karusselleffekt
  • Beispielcode der Uniapp Vue- und NVUE-Karussellkomponenten

<<:  Detailliertes Tutorial zur Springcloud-Alibaba-Nacos-Linux-Konfiguration

>>:  Fehlerbehebung bei den Gründen, warum gelöschte MySQL-Datensätze nicht wirksam werden

Artikel empfehlen

CSS Sticky Footer-Implementierungscode

Dieser Artikel stellt den Implementierungscode fü...

CSS 3.0 Text Hover Jump Spezialeffekte-Code

Hier ist ein mit CSS 3.0 implementierter Textschw...

Vier Methoden zur Datentypbeurteilung in JS

Inhaltsverzeichnis 1. Art von 2. Instanz von 3. K...

Zusammenfassung der Probleme mit der Mysql-connector-java-Treiberversion

Problem mit der Mysql-Connector-Java-Treiberversi...

So gehen Sie nach der MySQL-Tabellenpartitionierung problemlos online

Inhaltsverzeichnis Zweck der Tabelle Zum Beispiel...

Führen Sie die Schritte aus, um mit Samba Ordner in CentOS 7 freizugeben

Vorwort Samba ist eine kostenlose Software, die d...

Beispiel zum schnellen Löschen einer 2T-Tabelle in MySQL in Innodb

Vorwort Dieser Artikel stellt hauptsächlich den r...

HTML-Multimediaanwendung: Einfügen von Flash-Animationen und Musik in Webseiten

1. Anwendung von Multimedia in HTML_Flash-Animati...

Dinge, die Sie nicht über die CSS-Pseudoelemente ::before und ::after wissen

CSS hat zwei Pseudoklassen, die nicht häufig verw...

So bewerben Sie sich für Webdesign-Jobs

<br />Hallo zusammen! Es ist mir eine Ehre, ...

Auszeichnungssprache - Bildersetzung

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

8 leistungsstarke Techniken zum Erstellen von HTML-Webseiten

<br />Es gibt zwar viele Tools zum Erstellen...