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

So optimieren Sie die MySQL-Abfragegeschwindigkeit

In den vorherigen Kapiteln haben wir die Auswahl ...

MySQL 5.7.17 Winx64 Installations- und Konfigurations-Tutorial

Heute habe ich die MySQL-Datenbank erneut auf mei...

Eine kurze Analyse kontrollierter und unkontrollierter Komponenten in React

Inhaltsverzeichnis Unkontrollierte Komponenten Ko...

Einfaches Beispiel für die Verschönerung von HTML-Kontrollkästchen und -Radios

Einfaches Beispiel für die Verschönerung von HTML...

vue $set implementiert die Zuweisung von Werten zu Array-Sammlungsobjekten

Vue $set Array-Sammlungsobjektzuweisung In der be...

Beheben von Problemen mit impliziter MySQL-Konvertierung

1. Problembeschreibung root@mysqldb 22:12: [xucl]...

So verwenden Sie Makros in JavaScript

In Sprachen werden häufig Makros zur Implementier...

Detaillierte Installationsanleitung für das Cloud-Server-Pagoda-Panel

Inhaltsverzeichnis 0x01. Installieren Sie das Pag...

Lebenszyklus und Hook-Funktionen in Vue

Inhaltsverzeichnis 1. Was ist der Lebenszyklus 2....

Implementierung von MySQL Select in der Unterabfrageoptimierung

Die folgende Demonstration basiert auf MySQL Vers...

MySQL-Variablendeklaration und Analyse gespeicherter Prozeduren

Deklarieren von Variablen Festlegen globaler Vari...