Vue3 realisiert den Bildlupeneffekt

Vue3 realisiert den Bildlupeneffekt

In diesem Artikelbeispiel wird der spezifische Code von Vue3 zur Erzielung des Bildlupeneffekts als Referenz geteilt. Der spezifische Inhalt ist wie folgt

Ergebnisse erzielen

Code

<Vorlage>
  <div Klasse="Warenbild">
    <!-- Großer Bildcontainer -->
    <div
      Klasse="groß"
      :Stil="[
        {
          Hintergrundbild: `url(${imageList[curId]})`,
          HintergrundPositionX: Position.HintergrundPositionX,
          HintergrundPositionY: position.HintergrundPositionY,
        },
      ]"
      v-if="istAnzeigen"
    ></div>
    <div Klasse="Mitte" ref="Ziel">
      <img :src="imageList[curId]" alt="" />
      <!-- Maskencontainer -->
      <div Klasse = "Ebene" :style = "{ links: links + 'px', oben: oben + 'px' }" v-if = "isShow"></div>
    </div>
    <ul Klasse="klein">
      <li
        v-for="(img, i) in Bildliste"
        :Schlüssel="i"
        @mouseenter="aktuelleId = i"
        :Klasse="{ aktiv: curId === i }"
      >
        <img :src="img" alt="" />
      </li>
    </ul>
  </div>
</Vorlage>
 
<Skript>
importiere { reaktiv, ref, watch } von 'vue'
importiere { useMouseInElement } von '@vueuse/core'
Standard exportieren {
  Name: 'Warenbild',
  Requisiten: {
    Bildliste: {
      Typ: Array,
      Standard: () => {
        zurückkehren []
      }
    }
  },
  aufstellen () {
    const curId = ref(0)
    const Ziel = ref(null)
    // elementX: der Offsetwert der Maus von der linken Seite // elementY: der Offsetwert der Tabelle von oben // isOutside: ob es außerhalb des Containers liegt (true für außerhalb und false für innerhalb)
    const { elementX, elementY, istAußen } = useMouseInElement(Ziel)
    const left = ref(0) // Der Abstand vom Schieberegler nach links const top = ref(0) // Der Abstand vom Schieberegler nach oben const isShow = ref(false) // Großes Bild und Maskenbild ein- und ausblenden const position = reactive({ // Die Position der großen Bildanzeige, der Standardwert ist 0
      HintergrundPositionX: 0,
      HintergrundPositionY: 0
    })
    betrachten(
      //Überwachungsobjekt [elementX, elementY, isOutside],
      () => {
        wenn (elementX.wert < 100) {
          // Minimaler Abstand nach links left.value = 0
        }
        wenn (elementX.value > 300) {
          linker Wert = 200
        }
        wenn (elementX.value > 100 und elementX.value < 300) {
          linker.Wert = elementX.Wert - 100
        }
        wenn (elementY.value < 100) {
          // Mindestabstand links top.value = 0
        }
        wenn (elementY.value > 300) {
          Spitzenwert = 200
        }
        wenn (elementY.value > 100 und elementY.value < 300) {
          top.value = elementY.value - 100
        }
        // Bewegung des Hintergrundbildes steuern // 1. Die Bewegungsrichtung der Maskenebene ist entgegengesetzt zu der des Hintergrundbildes // 2. Da das Flächenverhältnis von Maskenebene und Hintergrundbild 1:2 beträgt, bewegt sich das Hintergrundbild für jedes Pixel, um das sich die Maskenebene bewegt, um zwei Pixel // backgrondPosition: x, y;
        position.backgroundPositionX = -left.value * 2 + 'px'
        position.backgroundPositionY = -top.value * 2 + 'px'
 
        // Wenn sich der Wert von isOutside ändert, negiere ihn sofort und weise ihn isShow zu
        // isOutside: Liegt es außerhalb des Containers? True für außerhalb und false für innerhalb
        istShow.value = !istOutside.value
      },
      {}
    )
    zurückkehren {
      aktuell,
      Ziel,
      links,
      Spitze,
      Position,
      istAnzeigen
    }
  }
}
</Skript>

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:
  • Vue realisiert den Produktlupeneffekt
  • Beispielcode einer in Vue3 gekapselten Lupenkomponente
  • Vue implementiert die Lupenfunktion der Produktdetailseite
  • Vue implementiert den Lupeneffekt beim Tab-Umschalten
  • Vue implementiert einen einfachen Lupeneffekt
  • Vue implementiert ein Suchfeld mit einer Lupe
  • Vue3.0 Handschrift-Lupeneffekt
  • Vue implementiert Lupeneffekt
  • Ein handgeschriebener Vue-Lupeneffekt
  • Vue3 kapselt die Lupeneffektkomponente der Jingdong-Produktdetailseite

<<:  Detaillierte Erläuterung gängiger Vorgänge für Docker-Images und -Container

>>:  Installation verschiedener Versionen von MySQL 8.0.18 und während der Installation aufgetretene Probleme (Zusammenfassung)

Artikel empfehlen

JavaScript implementiert Produktdetails der E-Commerce-Plattform

In diesem Artikel wird ein allgemeines Beispiel f...

Detaillierte Erklärung zum MySQL-Datenarchivierungstool mysql_archiver

Inhaltsverzeichnis I. Überblick 2. pt-archiver Ha...

Einführung in die Verwendung gängiger XHTML-Tags

Es gibt viele Tags in XHTML, aber nur wenige werd...

Erste Schritte Tutorial für Anfänger: Domänennamenauflösung und Bindung

Wie können Sie also nach der Registrierung eines ...

Über Zabbix Admin-Login vergessen Passwort zurücksetzen

Das Problem beim Zurücksetzen des Passworts für d...

Vant+postcss-pxtorem implementiert Browser-Anpassungsfunktion

Rem-Layout-Anpassung Die Stile in Vant verwenden ...

Überwachung sowie Betrieb und Wartung von Linux-Diensten

Inhaltsverzeichnis 1. Installieren Sie das psutil...

Informationen zu VUEs Kompilierungsumfang und Slotumfang-Slotproblemen

Was sind Slots? Die Slot-Direktive ist v-slot, di...

Vue implementiert Ankerpositionierungsfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Was ist JavaScript Anti-Shake und Throttling

Inhaltsverzeichnis 1. Funktion Entprellung 1. Was...