Das Prinzip und die Implementierung des JS-Drag-Effekts

Das Prinzip und die Implementierung des JS-Drag-Effekts

Die Drag-Funktion wird hauptsächlich verwendet, um Benutzern die Durchführung bestimmter benutzerdefinierter Aktionen zu ermöglichen, wie z. B. Ziehen zum Sortieren, Ziehen und Verschieben von Popup-Fenstern usw.

Drag-and-Drop-Prozessaktionen

1. Durch Drücken der Maus wird das Ereignis onmousedown ausgelöst

2. Mausbewegung löst das Ereignis onmousemove aus

3. Das Loslassen der Maus löst das Ereignis onmouseup aus

Widerstandsprinzip

1. Maus drücken + Maus bewegen = ziehen-------Ereignis bei Mausklick + bei Mausbewegung

2. Lassen Sie die Maus los = kein Ziehen -------- Beenden Sie das Ziehen bei Mauszeiger hoch

3. Mausversatz = Ziehdistanz

Zeichnen Sie beim Klicken auf das DOM die aktuellen Mauskoordinaten auf, d. h. die x- und y-Werte sowie die oberen und linken Werte des gezogenen DOM, und fügen Sie der Rückruffunktion für gedrückte Maus ein Mausbewegungsereignis hinzu:

document.addEventListener("mousemove", verschieben, false)

Und fügen Sie das Mouse-Up-Ereignis hinzu

document.addEventListener("mouseup",Funktion() {
document.removeEventListener("mousemove", verschieben, false);
}, FALSCH);

Dieses Anhebeereignis wird verwendet, um die Überwachung der Mausbewegung abzubrechen, da das Ziehen nur erfolgen kann, wenn die Maus gedrückt wird, und die Bewegung beendet wird, wenn sie angehoben wird.

Wenn die Maus gedrückt und bewegt wird, werden die x- und y-Werte der Bewegung aufgezeichnet. Anschließend lauten die oberen und linken Werte des gezogenen DOM:
top = der höchste Wert des DOM, der beim Drücken der Maus aufgezeichnet wird + (y-Wert während der Bewegung – y-Wert beim Drücken der Maus)
links = der linke Wert des DOM, der beim Drücken der Maus aufgezeichnet wird + (x-Wert während der Bewegung – x-Wert beim Drücken der Maus);

//Extrem einfache Version var div = document.querySelector("div");
    // Beim Drücken mit dem Warten auf Mausbewegungsereignisse im Dokument beginnen // Beim Loslassen der Maus mit dem Warten beginnen // Ziehen nur beim Drücken vorbereiten div.onmousedown=function(e1){
        // Wenn sich die Maus im Dokument bewegt, kann sie sich nicht auf dem div bewegen, da die Maus das div verlassen könnte, wodurch es unmöglich würde, das div zu ziehen.onmousemove=function(e){
            // Wenn sich die Maus bewegt, werden die aktuellen Mauskoordinaten relativ zum Ansichtsfenster links und oben im Element zugewiesen
            // Da wir an der gedrückten Position ziehen müssen, müssen wir auch die Position der oberen linken Ecke der Maus relativ zum Div ermitteln, wenn die Taste gedrückt wird. // Aktuelle Mausposition abzüglich der Position der oberen linken Ecke des relativen Elements verwenden, um sicherzustellen, dass die Maus an der gedrückten Position gezogen wird. div.style.left=e.clientX-e1.offsetX+"px";
            div.style.top=e.clientY-e1.offsetY+"px";
        }
        // Wenn die Maustaste losgelassen wird, lösche das Mausbewegungsereignis und lösche das Mausloslassenereignis div.onmouseup=function(){
            Dokument.onmousemove=null;
            Dokument.onmouseup=null;
        }
    }

//Einfache Version var div = document.querySelector("div");
    var OffsetX, OffsetY;
    div.addEventListener("mousedown",mouseDownHandler);

    Funktion mouseDownHandler(e){
        offsetX=e.offsetX
        offsetY=e.offsetY
        document.addEventListener("Mausbewegung",MausbewegungsHandler)
        document.addEventListener("mouseup",mouseupHandler)
    }

    Funktion MausbewegungsHandler(e){
        div.style.left=e.clientX-offsetX+"px"
        div.style.top=e.clientY-offsetY+"px"
    }

    Funktion mouseupHandler(e){
        document.removeEventListener("Mausbewegung",MausbewegungsHandler)
        document.removeEventListener("mouseup",mouseupHandler)
    }

// Einfache aktualisierte Version var div = document.querySelector ("div");
    var OffsetX, OffsetY;
    div.addEventListener("Maus gedrückt",MausHandler);

    Funktion MausHandler(e){
        wenn(e.type==="mousedown"){
            offsetX=e.offsetX;
            offsetY=e.offsetY;
            document.addEventListener("Mausbewegung",MausHandler)
            document.addEventListener("Maus hoch",MausHandler)
        }sonst wenn(e.type==="mousemove"){
            div.style.left=e.clientX-offsetX+"px"
            div.style.top=e.clientY-offsetY+"px"
        }sonst wenn(e.type==="mouseup"){
            document.removeEventListener("Mausbewegung",MausHandler)
            document.removeEventListener("Maus hoch",MausHandler)
        }
}

Notiz

a. Der Stil des gezogenen Elements muss auf eine absolute oder relative Position eingestellt werden, um wirksam zu sein.
b. Ziehen Sie es per Drag & Drop in das Dokument, da sich der Inhalt sonst löst

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:
  • JQuery-Dialog (JS-Modalfenster, verschiebbares DIV)
  • Analyse der Verwendung der Drag & Drop-Sortierung von Sortable.js
  • js, um einen Drag-Effekt zu erzielen
  • JavaScript implementiert die Touchscreen-Drag-Funktion auf mobilen Endgeräten
  • Einfacher Drag-Effekt mit js implementiert
  • JS realisiert einen schönen Fenster-Drag-Effekt (Größe kann geändert, maximiert, minimiert, geschlossen werden)
  • Beispiel einer Drag-and-Drop-Upload-Funktion für Dateien, die von JS implementiert wurde
  • Verwenden von Javascript zum Implementieren von Maus-Drag-Ereignissen
  • Implementierungscode für den Drag-Effekt der JS-Komponente Bootstrap Table Table
  • JavaScript implementiert den horizontalen Fortschrittsbalken-Drag-Effekt

<<:  Detaillierte Erläuterung verschiedener Fehlerbehandlungen, wenn Nginx nicht gestartet werden kann

>>:  So implementieren Sie eine geplante Sicherung von MySQL unter Linux

Artikel empfehlen

Detaillierte Erläuterung des Datenproxys und der Ereignisse von VUE

Inhaltsverzeichnis Überprüfung der Object.defineP...

So ändern Sie die Tomcat-Portnummer in Linux

Ich habe hier mehrere Tomcats. Wenn ich sie gleic...

Detaillierte Erklärung unsichtbarer Indizes in MySQL 8.0

Wort Seit der ersten Version von MySQL 8.0 liegen...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.13

Installation der Msyql-Datenbank. Zu Ihrer Inform...

Einfache und schnelle Einführung in die React-Routing-Entwicklung

Installieren Geben Sie zur Installation den folge...

Nginx-Weiterleitung basierend auf URL-Parametern

Anwendungsszenarien: Der Sprungpfad muss entsprec...

Detaillierte Erläuterung der kombinierten MySQL-Abfrage

Verwenden von UNION Die meisten SQL-Abfragen best...

Implementierung von Socket-Optionen in der Linux-Netzwerkprogrammierung

Socket-Optionsfunktion Funktion: Methoden zum Les...

Unterschiede zwischen Windows Server 2008R2, 2012, 2016 und 2019

Inhaltsverzeichnis Allgemeine Versionseinführung ...

Detaillierte Erläuterung der Hosts-Dateikonfiguration auf einem Linux-Server

Konfiguration der Hostdatei des Linux-Servers Die...

So fügen Sie Vite-Unterstützung zu alten Vue-Projekten hinzu

1. Einleitung Ich habe vor zwei Jahren ein Projek...