1. Rendern 2. UmsetzungsprinzipMithilfe von zwei Bildern mit gleicher Breiten- und Höhenvergrößerung, kombiniert mit dem Mausversatz, dem Elementversatz, der eigenen Breite und Höhe des Elements und anderen Attributen in js, wird dies vervollständigt; die Maske auf der linken Seite bewegt sich um Xpx und das große Bild auf der rechten Seite bewegt sich um X*Vielfaches von px; der Rest kann mithilfe der Grundschulmathematik berechnet werden. HTML und CSS : <div Klasse="wrap"> <!-- Miniaturansicht und Maske --> <div id="klein"> <img src="img/1.jpg" alt="" > <div id="Markierung"></div> </div> <!-- Vergrößertes Bild im gleichen Maßstab --> <div id="groß"> <img src="img/2.jpg" alt="" id="bigimg"> </div> </div> * { Rand: 0; Polsterung: 0; } .wickeln { Breite: 1500px; Rand: 100px automatisch; } #klein { Breite: 432px; Höhe: 768px; schweben: links; Position: relativ; } #groß { /* Hintergrundfarbe: seegrün; */ Breite: 768px; Höhe: 768px; schweben: links; /* Der Teil hinter dem Sucher ist verborgen*/ Überlauf: versteckt; Rand links: 20px; Position: relativ; Anzeige: keine; } #großesBild { /* Breite: 864px; */ Position: absolut; links: 0; oben: 0; } #markieren { Breite: 220px; Höhe: 220px; Hintergrundfarbe: #fff; Deckkraft: .5; Position: absolut; links: 0; oben: 0; /* Mauspfeilstil*/ Cursor: bewegen; Anzeige: keine; } // Holen Sie sich das kleine Bild und die Maske, das große Bild und die große Box var small = document.getElementById("small") var Markierung = document.getElementById("Markierung") var groß = document.getElementById("groß") var bigimg = document.getElementById("bigimg") //Mausbewegungsereignisse im kleinen Bildbereich abrufen; die Maske folgt der Mausbewegung small.onmousemove = function (e) { // Den Versatz der Maske relativ zum Miniaturbild abrufen (Mauskoordinaten – Versatz des Miniaturbilds relativ zum Hauptteil – die Hälfte der Breite oder Höhe der Maske) var s_left = e.pageX - Markierung.OffsetWidth / 2 - small.OffsetLeft var s_top = e.pageY - Markierung.OffsetHeight / 2 - small.OffsetTop // Die Maske kann nur innerhalb des Miniaturbildes verschoben werden, daher muss der Schwellenwert des Maskenversatzes (relativ zum Miniaturbildwert) berechnet werden var max_left = kleine.OffsetWidth - Markierung.OffsetWidth; var max_top = kleine.OffsetHeight - Markierung.OffsetHeight; // Wenn sich die Maske bewegt, bewegt sich auch das große Bild rechts (für jedes Pixel, um das sich die Maske bewegt, muss sich das Bild n-mal in die entgegengesetzte Richtung bewegen) var n = große.OffsetWidth / mark.OffsetWidth // Beurteilen Sie, bevor die Maske der Mausbewegung folgt: Der Versatz der Maske relativ zum Miniaturbild darf den Bereich nicht überschreiten und muss neu zugewiesen werden, wenn er den Bereich überschreitet (der kritische Wert wurde oben berechnet: max_left und max_top) // Bestimme die horizontale Grenze, wenn (s_left < 0) { s_links = 0 } sonst wenn (s_left > max_left) { s_links = max_links } //Beurteile die vertikale Grenze, wenn (s_top < 0) { s_top = 0 } sonst wenn (s_top > max_top) { s_top = max_top } //Der Maske links und oben Werte zuweisen (dynamisch? Denn e.pageX und e.pageY sind veränderliche Größen), verschieben! Markierung.Stil.links = s_links + "px"; mark.style.top = s_top + "px"; // Berechnen Sie die Distanz, über die sich das große Bild bewegt. var levelx = -n * s_left; var vertikaly = -n * s_top; // Bild verschieben bigimg.style.left = levelx + "px"; bigimg.style.top = vertikal + "px"; } // Die Maske und der Folgestil werden nur angezeigt, wenn die Maus in das kleine Bild hineinbewegt wird und verschwinden, wenn die Maus aus dem kleinen Bild herausbewegt wird small.onmouseenter = function () { mark.style.display = "Block" großer.Stil.Anzeige="Block" } klein.onmouseleave = Funktion () { mark.style.display = "keine" big.style.display="keine" } 3. Zusammenfassung
Dies ist das Ende dieses ausführlichen Artikels zur Implementierung einer Lupe in js. Weitere relevante Inhalte zur Implementierung einer Lupe in js finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Holen Sie sich den berechneten Stil im CSS-Element (nach dem kaskadierenden/finalen Stil).
>>: Beispiel für die Verwendung eines CSS-Filters zum Schreiben von Mouseover-Effekten
Lösung Fügen Sie position:relative zum übergeordn...
Inhaltsverzeichnis einführen 1. Pica 2. Lena.js 3...
Einige Projekte haben ein relativ einfaches Gesch...
Linux-Grundkonfiguration Kompilieren und installi...
Drei nützliche Codes, die Besuchern dabei helfen,...
Die ultimative Methode zur Lösung des Ajax-Parser...
Unter den Anforderungen des heutigen responsiven ...
Mysql ist eine gängige relationale Open-Source-Da...
Inhaltsverzeichnis Was ist Express-Middleware? Vo...
Kürzlich wurde beim Ausführen eines alten RN-Proj...
Wann ist die Installation durchzuführen? Wenn Sie...
Vorwort Führen Sie den Befehl show create table &...
Vorwort Jedes Mal, wenn Sie Docker verwenden, um ...
Kürzlich wurde bei einem Online-Sicherheitsscan e...
Inhaltsverzeichnis 1.v-Modell 2. Bindungseigensch...