Ideen und Codes zur Realisierung des Lupeneffekts in js

Ideen und Codes zur Realisierung des Lupeneffekts in js

In diesem Artikelbeispiel wird der spezifische Code von js zur Erzielung des Lupeneffekts als Referenz geteilt. Der spezifische Inhalt ist wie folgt

Stilanzeige:

Ideen

Bereiten Sie zunächst zwei Bilder vor, ein kleines Bild und ein großes Bild. Die beiden Bilder haben ein ganzzahliges Verhältnis

Stellen Sie über dem kleinen Bild einen Lupenstil ein und stellen Sie den Hintergrund auf eine transparente Farbe ein

Platzieren Sie ein übergeordnetes Element außerhalb des großen Bilds und verbergen Sie es, wenn es das übergeordnete Element überschreitet. Die Größe sollte gerade ausreichen, um den vergrößerten Teil aufzunehmen. Das Verhältnis des übergeordneten Elements zum Lupenstil entspricht dem Verhältnis des großen Bilds zum kleinen Bild.

Wenn die Maus über das kleine Bild bewegt wird, werden die Koordinaten der Maus abgerufen, die Koordinaten der Maus auf dem kleinen Bild abgerufen, die Koordinaten des großen Bildes entsprechend dem entsprechenden Verhältnis berechnet und das große Bild so verschoben, dass der vergrößerte Teil innerhalb des sichtbaren Bereichs des übergeordneten Elements liegt.

Code

1.html Teil

<div id="box">
        <!-- toBig ist ein Lupenelement -->
     <div id="zuGroß"></div>
        <!-- Kleines Bild -->
  <img src="img/05.jpg" id="smallImg" width="800px">
</div>
<div id="beBig">
        <!-- Großes Bild, Verhältnis 1,5 -->
  <img src="img/05.jpg" id="bigImg" width="1200px">
</div>

2. CSS-Stilteil

 *{
          Rand: 0px;
          Polsterung: 0px;
            }    
            #Kasten{
             Position: relativ;
             schweben: links;
            }
   #zuGroß{
    Breite: 80px;
    Höhe: 80px;
    Rand: 1px durchgehend grau;
    Hintergrundfarbe: transparent;
    Position: absolut;
   }
   #seiGroß{
    schweben: links;
    Überlauf: versteckt;
    Rand: 1px durchgehend grau;
    Position: relativ;
    links: 40px;
    oben: 325px;
   }
   #großesBild{
    Position: absolut;
   }

3. Skriptteil

<Skripttyp="text/javascript">
            //Holen Sie sich das kleine Bild, das große Bild, das Lupenelement und das übergeordnete Element des großen Bildes var smallImg = document.querySelector ("#smallImg");
   var bigImg = document.querySelector("#bigImg");
   var toBig=document.querySelector("#toBig");
   var beBig=document.querySelector("#beBig");
 
            /*Berechnen Sie das Verhältnis von kleinen Bildern zu großen Bildern beim Laden der Seite*/
            var q=0;
   fenster.onload = funktion(){
    q=großesBild.Offsetbreite/kleinesBild.Offsetbreite;
                //Berechnen Sie die Größe des anzuzeigenden vergrößerten Inhalts basierend auf der Breite, Höhe und dem Verhältnis der Lupe beBig.style.width = toBig.clientWidth * q + "px";
    beBig.style.height = toBig.clientHeight * q + "px";
   }
            //Holen Sie sich die Mitte des Lupenelements und stellen Sie sicher, dass sich die Maus in der Mitte der Lupe befindet. var xCenter=toBig.clientWidth/2;
   var yCenter=toBig.clientHeight/2;
 
            //Flag ist ein Zeichen. Wenn die Maus gedrückt wird, ist es wahr, Sie können sich bewegen. Flag=false;
   toBig.onmousedown = Funktion(){
    Flagge=wahr;
   }
   toBig.onmouseup = Funktion(){
    Flagge=falsch;
   }
   
   Fenster.onmousemove=Funktion(ev){
    var ev = ev || Fenster.Ereignis;
                //Wenn Flag wahr ist, wird das Lupenelement gedrückt und kann gezogen werden, wenn (Flag) {
                    // Aktuelle Position der Maus abrufen und zusätzlich zum Element selbst die zu verschiebende Position berechnen var mouseX=ev.clientX,mouseY=ev.clientY;
     var trueX=mouseX-xCenter;
 
                    //Beurteilen, ob das Lupenelement den kleinen Bildbereich überschreitet, if (trueX < smallImg.offsetLeft) {
      trueX = kleinesBild.offsetLeft;
     }
     wenn(trueX > smallImg.clientWidth - toBig.offsetWidth){
      trueX = smallImg.ClientWidth - toBig.OffsetWidth;
     }
     var trueY=mouseY - yCenter;
     wenn(trueY <= smallImg.offsetTop){
      trueY = kleinesBild.offsetTop;
     }
     if (trueY > smallImg.clientHeight - toBig.offsetHeight) {
      trueY = smallImg.clientHeight - toBig.offsetHeight;
     }
 
                    //Kleines Bild wird nachBig.style.left = trueX + "px";
     toBig.style.top = trueY + "px";
     Konsole.log(trueX,trueY);
     
     // Die Position, wohin das große Bild verschoben werden soll bigImg.style.left =-(trueX * q) + "px";
     bigImg.style.top = -(trueY * q) + "px";
    }
   }
   
</Skript>

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:
  • 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
  • JavaScript-Implementierung von Lupendetails

<<:  Auszeichnungssprache – CSS-Stil für Webanwendungen

>>:  Docker-Bereitstellung – Analyse des Implementierungsprozesses für RabbitMQ-Container

Artikel empfehlen

React+Koa-Beispiel zur Implementierung des Datei-Uploads

Inhaltsverzeichnis Hintergrund Serverabhängigkeit...

Die Prinzipien und Mängel der MySQL-Volltextindizierung

Der MySQL-Volltextindex ist ein spezieller Index,...

Schritte zum Anpassen des Symbols in Vue

ant-design-vue passt die Verwendung von Ali Iconf...

Beispiel für den Aufbau eines Redis-Sentinel-Clusters basierend auf Docker

1. Übersicht Redis Cluster ermöglicht hohe Verfüg...

So erstellen Sie ein Docker-Repository mit Nexus

Das mit dem offiziellen Docker-Register erstellte...

Das WeChat-Applet implementiert einen einfachen Rechner

Der einfache Rechner des WeChat-Applets dient Ihn...

Installieren Sie MySQL 5.7.17 im Win10-System

Das Betriebssystem Win10 MySQL ist die 64-Bit-ZIP...

Analyse der Prinzipien und Verwendung von Linux-Hardlinks und Softlinks

Im Linux-System gibt es einen Dateityp namens Lin...

Ubuntu kompiliert Kernelmodule und der Inhalt wird im Systemprotokoll angezeigt

Inhaltsverzeichnis 1.Linux-Anmeldeschnittstelle 2...

Aufbau einer Docker+K8S-Clusterumgebung und verteilte Anwendungsbereitstellung

1. Docker installieren yum installiere Docker #St...

Detaillierte Erläuterung des auf Python basierenden MySQL-Replikationstools

Inhaltsverzeichnis 1. Einleitung Zweites Training...

Zusammenfassung der XHTML-Anwendung im Webdesign-Studium

<br />Im Allgemeinen ist die Dateiorganisati...