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

Erläuterung des Problems bei der Auswahl des MySQL-Speicherzeittyps

Der datetime-Typ wird normalerweise zum Speichern...

VMware Workstation-Installation unter Linux

Vom Einsteiger bis zum Neueinsteiger ist das Linu...

Anfänger lernen einige HTML-Tags (2)

Verwandter Artikel: Anfänger lernen einige HTML-Ta...

Installieren Sie zwei MySQL5.6.35-Datenbanken unter Win10

Notieren Sie die Installation von zwei MySQL5.6.3...

Detaillierte Erklärung zu MySQL und Springs Autocommit

1 MySQL Autocommit-Einstellungen MySQL führt stan...

Detaillierte Beispiele zur Verwendung der Box-Shadow-Eigenschaft in CSS3

CSS enthält viele Attribute. Manche Attribute wer...

Lösung zum Anwenden von CSS3-Transformationen auf Hintergrundbilder

CSS-Transformationen sind zwar cool, wurden aber ...

Lösung für Win10 ohne Hyper-V

Suchen Sie immer noch nach einer Möglichkeit, Hyp...