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
Ressourcenzusammenführung und -komprimierung für ...
Ich glaube, dass jeder MySQL aus verschiedenen Gr...
Normalerweise müssen die von Benutzern hochgelade...
Heute werden wir einen fragmentierten Bildladeeff...
Inhaltsverzeichnis 1. Allgemeine Schritte zur SQL...
Schritt 1: Den aktuellen Kernel anzeigen rew $ un...
In diesem Artikel wird der spezifische Code von V...
Fügen Sie secure_file_priv = ' '; führen ...
Konfigurationsbeispiel Upstream-Backend { Server ...
Inhaltsverzeichnis 1. Haken anzeigen 1. Was bei d...
Inhaltsverzeichnis 1. Datentyp 1. Was sind MySQL-...
Dieser Artikel gibt Ihnen den spezifischen Code v...
Im Entwicklungsprozess eines Vue-Projekts konfigu...
Inhaltsverzeichnis Vorwort 1. Überprüfen Sie die ...
Es gibt drei Möglichkeiten, Farben in HTML darzust...