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:
|
<<: Detaillierte Erläuterung gängiger Vorgänge für Docker-Images und -Container
In diesem Artikel wird der spezifische Code von j...
Kürzlich stieß ich auf das Problem, ob die Daten b...
Bei der Verwendung von MySQL werden häufig Trigge...
Vorwort: Während des Betriebs und der Wartung der...
1. js schützt hasOwnProperty nicht vor unrechtmäß...
1. Wenn das mobile Endgerät die Listenverschiebun...
Ich habe den Quellcode des Fabric-Projekts noch e...
Angenommen, ein Knoten im Drei-Knoten-MGR ist abn...
In diesem Artikel wird der spezifische Code von j...
Vorwort scp ist die Abkürzung für „Secure Copy“. ...
Szenario: Beim Starten von Tomcat in Docker (Vers...
Ich habe auf Baidu gesucht. . Manche Leute sagen,...
Hier sind zwei Terminal-Split-Screen-Tools: scree...
Gestern wollte ich a:visited verwenden, um die Fa...
Vorwort Ich habe vor kurzem eine kleine Demo gesc...