In diesem Artikelbeispiel wird der spezifische Code von Vue zur Erzielung des Produktlupeneffekts als Referenz geteilt. Der spezifische Inhalt ist wie folgt 1. EinleitungIn dieser florierenden E-Commerce-Ära mit allen Arten von Live-Streaming oder Self-Service-Shopping haben wir ein besseres Verständnis für die Produkte und haben die Details genauer überprüft. Wir haben festgestellt, dass unsere Produkte vergrößert werden können. Also haben wir das Front-End-Technologie-Framework Vue verwendet und eine Funktion geschrieben, die einer Lupe ähnelt. 2. Umsetzungsideen Für den Anzeigebereich des Originalbilds (links) können Sie das Bild durch eine Leinwand ersetzen, um die Bildzeile zu schützen. 3. Effektanzeige4. Spezifischer ImplementierungslogikcodeVorlage (denken Sie daran, den Bildpfad zu ändern) <Vorlage> <div> <div Klasse="links"> <img class="leftImg" src="../../src/assets/curry.jpg" alt="" /> <!-- Maus-Layer-Abdeckung--> <div v-show="topShow" Klasse="top" :style="topStyle"></div> <!-- Die oberste Ebene deckt den gesamten ursprünglichen Bildbereich mit einer transparenten Ebene ab --> <div Klasse="MaskeOberteil" @mouseenter="EingabeHandler" @mousemove="BewegungsHandler" @mouseout="outHandler" ></div> </div> <div v-show="rShow" Klasse="rechts"> <Bild :Stil="r_img" Klasse="rechtesBild" quelle="../../quelle/assets/curry.jpg" alt="" /> </div> </div> </Vorlage> CSS-Stil <Stilbereich> /* Vergrößere das Bild und positioniere die obere linke Ecke auf (0,0) */ .rightImg { Anzeige: Inline-Block; Breite: 800px; Höhe: 800px; Position: absolut; oben: 0; links: 0; } /* Bildzoombereich rechts*/ .Rechts { Rand links: 412px; Breite: 400px; Höhe: 400px; Rand: 1px durchgehend rot; Position: relativ; Überlauf: versteckt; } /* Eine Maske der obersten Ebene */ .maskTop { Breite: 400px; Höhe: 400px; Position: absolut; Z-Index: 1; oben: 0; links: 0; } /* Ebenenmaske, positioniere die obere linke Ecke auf (0,0) */ .Spitze { Breite: 200px; Höhe: 200px; Hintergrundfarbe: Hellkoralle; Deckkraft: 0,4; Position: absolut; oben: 0; links: 0; } /* Anzeige des Originalbildes */ .leftImg { Breite: 400px; Höhe: 400px; Anzeige: Inline-Block; } /* Container des Originalbildes */ .links { Breite: 400px; Höhe: 400px; Rand: 1px, durchgehend blaugrün; schweben: links; Position: relativ; } </Stil> Skriptkern js <Skript> Standard exportieren { Daten() { zurückkehren { topStyle: { transform: "" }, r_img: {}, topShow: false, rShow: false, }; }, Methoden: { // Die Maus betritt den ursprünglichen Bildraum Funktion enterHandler() { // Anzeige der Ebenenmaske und des vergrößerten Bereichs this.topShow = true; dies.rShow = wahr; }, // Mausbewegungsfunktion moveHandler(event) { // Koordinatenposition der Maus let x = event.offsetX; sei y = Ereignis.OffsetY; // Die Koordinatenposition der oberen linken Ecke der Ebenenmaske und deren Begrenzung: Sie darf die obere linke Ecke des ursprünglichen Bildbereichs nicht überschreiten. let topX = x – 100 < 0? 0: x – 100; sei topY = y – 100 < 0? 0: y – 100; // Die Position der Ebenenmaske nochmals einschränken, so dass die Ebenenmaske nur dann innerhalb des originalen Bildbereichs liegen kann, wenn (topX > 200) { obenX = 200; } wenn (topY > 200) { obenY = 200; } // Steuerung durch Transformation verschieben this.topStyle.transform = `translate(${topX}px,${topY}px)`; this.r_img.transform = `übersetzen(-${2 * topX}px,-${2 * topY}px)`; }, // Maus raus Funktion outHandler() { //Steuern Sie das Ausblenden der Ebenenabdeckung und des Vergrößerungsbereichs. this.topShow = false; dies.rShow = falsch; }, }, }; </Skript> V. Zusammenfassung und GedankenUrsprünglich hatte ich links vom ursprünglichen Bildcontainer drei Mausereignisse hinzugefügt, aber es traten immer wieder Probleme auf. 1. Ich habe eine transparente MaskTop-Ebene hinzugefügt, die den Mausbereich abdeckt, um die Lupe vollständig sichtbar zu machen. Wenn ich diese MaskTop-Ebene nicht hinzufüge, bewegt sich die Mausmaske nicht mit der Maus, wenn meine Maus den ursprünglichen Bildbereich betritt, und vibriert bei der Mausbewegung mit hoher Frequenz. Der vergrößerte Bereich auf der rechten Seite bewegt sich nicht reibungslos. 2. Wenn die Ebene maskTop nicht hinzugefügt wird und ich die Maus in den ursprünglichen Bildbereich bewege, wird das Ereignis mousemove nur einmal ausgeführt. Dies scheint daran zu liegen, dass die Maske der Mausebene das 3. Ich habe zuvor versucht, die Anfangsposition der Mausmaske dynamisch zu bestimmen und sie in das MouseEnter-Ereignis einzufügen. Infolgedessen wurde das MouseEnter-Ereignis ungewöhnlich oft ausgeführt, als wäre es zu einem MouseMove-Ereignis geworden. Ich habe andere Lupengehäuse gesehen, aber bei keinem davon muss die Overlay-Maske der obersten Ebene hinzugefügt werden. Ich hoffe, dass mir jemand, der vorbeikommt, bei der Lösung dieses Problems helfen kann. 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:
|
>>: So weisen Sie Feldern bei der MySQL-Abfrage Standardwerte zu
Optgroup wird im Auswahltag verwendet, um den Inha...
Unabhängig von der verwendeten Ubuntu-Version ist...
Situationsbeschreibung: Die Datenbank wurde abnor...
1. Offizielle OpenSSL-Website Offizielle Download...
Die Haupttextseite von TW hatte früher eine Breite...
1. Daten vorbereiten Die folgenden Operationen we...
Überblick In Zabbix Version 5.0 und höher wurde e...
Dieser Artikel stellt vor, wie man das Ogg-Progra...
1. Einleitung Vor ein paar Tagen fragte mich ein ...
Dieser Artikel erläutert anhand von Beispielen da...
Der Standardtabellenname ist „base_data“ und der ...
Inhaltsverzeichnis 1. Überprüfen Sie, ob die Dock...
Personen, die MySQL häufig verwenden, können mit ...
Fünf Verzögerungsmethoden für die MySQL-Zeitblind...
Inhaltsverzeichnis Demo1 Fragment erstellen Svelt...