JavaScript-Implementierung von Lupendetails

JavaScript-Implementierung von Lupendetails

1. Rendern

2. Umsetzungsprinzip

Mithilfe 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

  • Sobald sich der Mausfokus bewegt, ist sein Versatz dynamisch. Nachdem das übergeordnete Element und die untergeordneten Elemente positioniert wurden, wird der „dynamische“ Effekt durch dynamisches Ändern left und top Werte eines Elements erzielt.
  • Großes Bild/kleines Bild = Lupe (Maske)/Sucher
  • Die beiden Bilder müssen im gleichen Verhältnis skaliert sein.

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:
  • Implementierungsprozess des Lupeneffekts im Javascript-Beispielprojekt
  • JavaScript realisiert Lupen-Spezialeffekte
  • JavaScript imitiert die Spezialeffekte der Jingdong-Lupe
  • Objektorientierte JavaScript-Implementierung eines Lupengehäuses
  • JavaScript imitiert den Jingdong-Lupeneffekt
  • JavaScript imitiert den Taobao-Lupeneffekt
  • JavaScript zum Erzielen eines Lupeneffekts
  • Ideen und Codes zur Realisierung des Lupeneffekts in js

<<:  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

Artikel empfehlen

Detaillierte Erklärung der Concat-bezogenen Funktionen in MySQL

1. concat()-Funktion Funktion: Mehrere Zeichenfol...

Linux-Grundlagen-Tutorial: Sonderberechtigungen SUID, SGID und SBIT

Vorwort Für Datei- oder Verzeichnisberechtigungen...

Detaillierte Schritte zur Installation von Anaconda unter Linux (Ubuntu 18.04)

Anaconda ist die beliebteste Python-Plattform für...

Implementierung langer Textschatten in Less in CSS3

Dieser Artikel stellt hauptsächlich die Implement...

Tutorial zur Installation und Konfiguration von MySQL 8.0.12 unter Win10

Installation, Konfiguration, Start, Anmeldung und...

Detaillierte Erklärung des Befehlsmodus in der Javascript-Praxis

Inhaltsverzeichnis Definition Struktur Beispiele ...

Installation und Verwendung von MySQL unter Ubuntu (allgemeine Version)

Unabhängig von der verwendeten Ubuntu-Version ist...

Schritte zum Ausführen von ASP.NET Core im Docker-Container

Es gibt in letzter Zeit zu viel Wissen zu lernen,...

Detaillierte Erläuterung des Zahlungsfunktionscodes des Vue-Projekts

1. Alipay-Methode: Alipay-Methode: Klicken Sie zu...

Detaillierte Erklärung des Prinzips des js-Proxys

Inhaltsverzeichnis Was ist der Proxy-Modus? Einfü...

JavaScript implementiert Konstellationsabfragefunktion mit detailliertem Code

Inhaltsverzeichnis 1. Titel 2. Code 3. Ergebnisse...