So erzielen Sie mit Vue3 beispielsweise einen Lupeneffekt

So erzielen Sie mit Vue3 beispielsweise einen Lupeneffekt

Vorwort

Ich glaube, jeder hat beim Surfen auf Shopping-Websites schon einmal gesehen, dass ein Vergrößerungseffekt auftritt, wenn man mit der Maus über ein Produkt fährt. Heute werden wir selbst eine globale Komponente mit einem Lupeneffekt kapseln. Werfen wir einen Blick darauf~

1. Die Bedeutung der Kapselung

  • Aus technischer Sicht
    • Es wird durch die Vue-Plug-In-Methode als globale Komponente gekapselt und kann an anderen Stellen des gesamten Projekts verwendet werden. Es ist einfach zu verwenden
    • Modulares Entwicklungskonzept, ein Modul realisiert eine Funktion
  • Benutzerperspektive
    • Kann ein besseres Surferlebnis bieten
    • Sie können die Details des Produkts sehen

2. Wie kapselt man?

1. Vorbereitung

Sie müssen die Methode useMouseInElement von @vueuse/core verwenden. Öffnen Sie daher zuerst das Terminal im Stammverzeichnis des Projekts und führen Sie den folgenden Befehl aus

Die hier angegebene installierte Version wählen Sie bitte entsprechend Ihren Anforderungen

npm installiere @vueuse/[email protected]

2. Beginnen Sie mit dem Verpacken

Verwenden Sie wie im vorherigen Artikel das Vue-Plugin, um globale Komponenten zu registrieren

Speichern Sie die gekapselten globalen Komponenten in src/components und erstellen Sie in diesem Verzeichnis eine neue Datei enlarge-images.vue.

Der Code lautet wie folgt (Beispiel):

<Vorlage>
  <div Klasse="Warenbild">
    <!-- Großes Bild in der Vorschau -->
    <div Klasse="groß" :style='[{Hintergrundbild: `url(${images[currIndex]})`}, bgPosition]' v-show='isShow'></div>
    <div Klasse="Mitte" ref='Ziel'>
      <!-- Großes Bild links -->
      <img :src="Bilder[aktuellerIndex]" alt="">
      <!-- Maskenebene-->
      <div class="Ebene" :style='[Position]' v-show='isShow'></div>
    </div>
    <ul Klasse="klein">
      <!-- Miniaturbild rechts-->
       <li v-for="(img,i) in Bildern" :key="img" :class="{active:i===currIndex}">
        <img @mouseenter="currIndex=i" :src="img" alt="">
      </li>
    </ul>
  </div>
</Vorlage>
<Skript>
importiere { ref, watch, reactive } von 'vue'
importiere { useMouseInElement } von '@vueuse/core'

Standard exportieren {
  Name: 'Bildervergrößerung',
  Requisiten: {
    Bilder:
      Typ: Array,
      Standard: () => []
    }
  },
  Setup (Requisiten) {
    Konstant aktuellerIndex = ref(0)
    const Ziel = ref(null)
    const isShow = ref(false)
    //Koordinaten der Maskenebene const position = reactive({
      links: 0,
      oben: 0
    })
    // Position des Hintergrundbildes steuern const bgPosition = reactive({
      HintergrundPositionX: 0,
      HintergrundPositionY: 0
    })
    const { elementX, elementY, istAußen } = useMouseInElement(Ziel)
    // Auf Informationen zur Mausbewegung achten watch([elementX, elementY, isOutside], () => {
      // Bei jeder Wertänderung die neuen Daten lesen isShow.value = !isOutside.value
      // Die Maus befindet sich außerhalb des Bildbereichs, keine Koordinatenberechnung nötig if (isOutside.value) return
      // Horizontale Richtungwenn (elementX.value < 100) {
        // Linke Grenze position.left = 0
      } sonst wenn (elementX.value > 300) {
        // Rechte Grenze position.left = 200
      } anders {
        // Der mittlere Zustand position.left = elementX.value - 100
      }
      // Vertikale Richtungwenn (elementY.value < 100) {
        // Obere Grenze position.top = 0
      } sonst wenn (elementY.value > 300) {
        // Untere Rahmenposition.oben = 200
      } anders {
        // Der mittlere Zustand position.top = elementY.value - 100
      }
      // Konsole.log(ElementX.Wert, ElementY.Wert, IsOutside.Wert)
      //Berechnen Sie die Position des Vorschauhintergrunds bgPosition.backgroundPositionX = -position.left * 2 + 'px'
      bgPosition.backgroundPositionY = -position.top * 2 + 'px'
      // Berechne die Position der linken Maskenebene position.left += 'px'
      position.oben += 'px'
    })
    return { aktuellerIndex, Ziel, istAnzeigen, Position, Hintergrundposition }
  }
}
</Skript>
<style scoped lang="weniger">
.Warenbild {
  Box-Größe: Rahmenbox;
  Breite: 480px;
  Höhe: 400px;
  Position: relativ;
  Anzeige: Flex;
  Z-Index: 500;
   img {
        Breite: 100 %;
        Höhe: 100%;
    }
  .groß {
    Position: absolut;
    oben: 0;
    links: 410px;
    Breite: 400px;
    Höhe: 400px;
    Kastenschatten: 0 0 10px rgba (0, 0, 0, 0,1);
    Hintergrundwiederholung: keine Wiederholung;
    Hintergrundgröße: 800px 800px;
    Hintergrundfarbe: #f8f8f8;
  }
  .Mitte {
    Breite: 400px;
    Höhe: 400px;
    Hintergrund: #f5f5f5;
    Position: relativ;
    Cursor: bewegen;
    .Schicht {
      Breite: 200px;
      Höhe: 200px;
      Hintergrund: rgba(0, 0, 0, 0,2);
      links: 0;
      oben: 0;
      Position: absolut;
    }
  }
  .klein {
    Rand: 0;
    Polsterung: 0;
    Breite: 80px;
    li {
      Breite: 68px;
      Höhe: 68px;
      Rand: 10px;
      Listenstil: keiner;
      Cursor: Zeiger;
      &:schweben,
      &.aktiv {
        Rand: 2px durchgezogen #27ba9b;
      }
    }
  }
}
</Stil>

Erstellen Sie eine neue index.js unter src/components

Importieren Sie EnlargeImages aus „./enlarge-images.vue“.

Standard exportieren {
  installieren (App) {
    app.component(VergrößernBilder.name, VergrößernBilder)
  }
}

Als Plugin in main.js registrieren

importiere { createApp } von 'vue'
App aus „./App.vue“ importieren
Router aus „./router“ importieren
Store aus „./store“ importieren
// Eigene Kapselung importiere myUI aus './components'

createApp(App).verwenden(store).verwenden(router).verwenden(myUI).mount('#app')

3. Nutzung

Hier verwenden wir feste Daten zum Testen

Der Code lautet wie folgt (Beispiel):

<Vorlage>
  <div Klasse="Home-Banner">
    <!-- Lupeneffekt-->
    <Bilder vergrößern :images="Bilder"/>
  </div>
</Vorlage>

<Skript>

Standard exportieren {
  Name: "App",
  aufstellen() {
    const Bilder = [
      'https://code-1307161657.cos.ap-beijing.myqcloud.com/images%2Fcloud.jpeg',
      'https://code-1307161657.cos.ap-beijing.myqcloud.com/images%2Fground.jpeg',
      'https://code-1307161657.cos.ap-beijing.myqcloud.com/images%2Fnight.jpeg',
      'https://code-1307161657.cos.ap-beijing.myqcloud.com/images%2Fstreet.jpeg',
      „https://code-1307161657.cos.ap-beijing.myqcloud.com/images%2Fsun.jpeg“
    ]

    return { Bilder }
  }
}
</Skript>

<style lang="less">
.home-banner {
  Breite: 1000px;
  Rand: 50px automatisch;
}
</Stil>

3. Wirkungsdemonstration

Bewegen Sie die Maus über das kleine Bild rechts, um das aktuell angezeigte Bild umzuschalten.

Bewegen Sie die Maus in den Bildvorschaubereich links und verschieben Sie die Maus im Vorschaubereich, um den vergrößerten markierten Bereich rechts anzuzeigen.

(PS: Das GIF-Bild ist zu groß, bitte sehen Sie sich das Effektbild an~)

Zusammenfassen

Informationen zur Methode der Stapelregistrierung als globale Komponenten finden Sie im Artikel „Allgemeine Vue-Toolfunktionen“.

Dies ist das Ende dieses Artikels zur Verwendung von vue3 zum Erzielen eines Lupeneffekts. Weitere relevante Inhalte zum Erzielen eines Lupeneffekts mit vue3 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Beispielcode einer in Vue3 gekapselten Lupenkomponente
  • Vue3 realisiert den Bildlupeneffekt
  • Vue implementiert die Lupenfunktion der Produktdetailseite
  • Vue implementiert den Lupeneffekt beim Tab-Umschalten
  • Vue implementiert einen einfachen Lupeneffekt
  • Detaillierte Erklärung der Kapselung und Verwendung der Vue-Bildvergrößerungskomponente
  • Vue implementiert ein Suchfeld mit einer Lupe
  • Vue3.0 implementiert die Fallstudie zum Lupeneffekt
  • Vue3.0 Handschrift-Lupeneffekt
  • Vue implementiert Lupeneffekt
  • Detaillierte Erläuterung der Produkthauptbild-Lupenlösung basierend auf Vue
  • Ein handgeschriebener Vue-Lupeneffekt
  • Verwendung des E-Commerce-Bildvergrößerungs-Plugins basierend auf vue2.x
  • Vue realisiert den Produktlupeneffekt

<<:  So exportieren Sie die MySQL-Tabellenstruktur nach Excel

>>:  So verwenden Sie Filter zur Implementierung der Überwachung in Zabbix

Artikel empfehlen

Eine kurze Analyse zum besten Umgang mit vergessenen MySQL 8-Passwörtern

Vorwort Leser, die mit MySQL vertraut sind, werde...

HTML verwendet Canvas, um die Bullet-Screen-Funktion zu implementieren

Einführung Kürzlich musste ich für einen großen A...

CSS imitiert Fernbedienungstasten

Hinweis: Diese Demo wurde in der Miniprogrammumge...

js+css zur Realisierung eines dreistufigen Navigationsmenüs

In diesem Artikelbeispiel wird der spezifische Co...

Wie erreicht MySQL eine Master-Slave-Synchronisierung?

Die Master-Slave-Synchronisierung, auch Master-Sl...

Eine ausführliche Einführung in React-Referenzen

1. Was ist Refs wird in Computern als Resilient F...

Detaillierte Erklärung und Erweiterung von ref und reactive in Vue3

Inhaltsverzeichnis 1. Ref und reaktiv 1. reaktiv ...

Eine detaillierte Einführung in die Linux-Verzeichnisstruktur

Wenn Sie mit dem Erlernen von Linux beginnen, müs...

Miniprogramm zur Implementierung des Slider-Effekts

In diesem Artikelbeispiel wird der spezifische Co...

MySQL-Fallanalyse der Transaktionsisolationsebene

Inhaltsverzeichnis 1. Theorie SERIALISIERBAR WIED...

Verwendung des Linux-Befehls „userdel“

1. Befehlseinführung Der Befehl userdel (User Del...