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

Tomcat erhält den Clientdomänennamen des Nginx-Reverse-Proxys

Frage Nach dem Nginx-Reverse-Proxy erhält die Tom...

Beispiel für die Implementierung des Lastausgleichs mit Nginx+SpringBoot

Einführung in den Lastenausgleich Bevor wir die L...

Grundlagen der HTML-Bearbeitung (ein Muss für Anfänger)

Öffnen Sie DREAMWEAVER und erstellen Sie ein neue...

Umfassende Website-Bewertungslösung

<br />Manchmal werden Ihnen möglicherweise F...

Verwendung von Vue-Filtern und benutzerdefinierten Anweisungen

Inhaltsverzeichnis Filter 01.Was ist 02. Wie es g...

Schauen wir uns einige leistungsstarke Operatoren in JavaScript an

Inhaltsverzeichnis Vorwort 1. Null-Koaleszenzoper...

So zählen Sie das Datum mit Bash herunter

Sie möchten wissen, wie viele Tage es bis zu eine...

Gemeinsame Eigenschaften des Framesets (Unterteilung von Frames und Fenstern)

Ein Frame ist ein Webseitenbildschirm, der in mehr...

Welche Wissenssysteme brauchen Webdesigner?

Produktdesigner sind mit komplexen und großen Fert...

Ein kurzes Verständnis der drei Prinzipien zum Hinzufügen von MySQL-Indizes

1. Die Bedeutung von Indizes Indizes werden verwe...