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

Welche Vorteile bietet die Verwendung von B+Tree als Index in MySQL?

Inhaltsverzeichnis Warum benötigen Datenbanken In...

MySQL Online-DDL-Tool Gh-Ost-Prinzipanalyse

Inhaltsverzeichnis 1. Einleitung 1.1 Grundsatz 1....

Wir zeigen Ihnen einen Trick, um einen Textvergleich unter Linux durchzuführen

Vorwort Während des Schreibens des Codes werden w...

Ein Artikel zum Lösen des Echarts-Kartenkarussell-Highlights

Inhaltsverzeichnis Vorwort Aufgabenliste tun Sie ...

Detaillierte grafische Erklärung zum Löschen des Keep-Alive-Cache

Inhaltsverzeichnis Eröffnungsszene Direktes Rende...

onfocus="this.blur()" wird von blinden Webmastern gehasst

Als er über die Seite zur Bedienung der Bildschir...

So erhalten Sie die Breite und Höhe des Bildes im WeChat-Applet

Herkunft Zurzeit arbeite ich an Anforderung A, in...

Zusammenfassung der zehn häufigsten Probleme bei MySQL-Indexfehlern

Inhaltsverzeichnis Hintergrund 1. Die Abfragebedi...

Der Unterschied zwischen HTML-Block-Level-Tags und Inline-Tags

1. Blockebenenelement: bezieht sich auf die Fähigk...

Was sind die Unterschiede zwischen xHTML- und HTML-Tags?

Alle Tags müssen klein geschrieben sein In XHTML m...