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

js realisiert die Lupenfunktion der Shopping-Website

In diesem Artikel wird der spezifische Code von j...

Zusammenfassung der Zeilenumbruchprobleme bei Textbereichen in HTML

Kürzlich stieß ich auf das Problem, ob die Daten b...

Tutorial zum Deaktivieren und Aktivieren von Triggern in MySQL [Empfohlen]

Bei der Verwendung von MySQL werden häufig Trigge...

So zeigen Sie MySQL-Links an und löschen abnormale Links

Vorwort: Während des Betriebs und der Wartung der...

Docker-Pull-Image und Tag-Vorgang Pull | Tag

Ich habe den Quellcode des Fabric-Projekts noch e...

MySQL 8.0.18 verwendet Klon-Plugin, um die MGR-Implementierung neu zu erstellen

Angenommen, ein Knoten im Drei-Knoten-MGR ist abn...

jQuery erzielt den Shutter-Effekt (mithilfe der Li-Positionierung)

In diesem Artikel wird der spezifische Code von j...

Zwei Tools zum Teilen des Bildschirms im Linux-Befehlszeilenterminal

Hier sind zwei Terminal-Split-Screen-Tools: scree...

CSS: besuchte geheime Erinnerungen des Pseudoklassenselektors

Gestern wollte ich a:visited verwenden, um die Fa...

Nginx-Proxy-Axios-Anforderung und Vorsichtsmaßnahmen

Vorwort Ich habe vor kurzem eine kleine Demo gesc...