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

So verwenden Sie den Linux-Befehl „more“ in allgemeinen Linux-Befehlen

more ist eines unserer am häufigsten verwendeten ...

Mit CSS3 implementierte Schaltfläche zum Hovern von Bildern

Ergebnis:Implementierungscode html <ul Klasse=...

js realisiert die Lupenfunktion der Shopping-Website

In diesem Artikel wird der spezifische Code von j...

Das Front-End muss wissen, wie Bilder verzögert geladen werden (drei Methoden)

Inhaltsverzeichnis 1. Was ist Lazy Loading? 2. Im...

Vue implementiert QR-Code-Scanfunktion (mit Stil)

brauchen: Verwenden Sie Vue, um das Scannen von Q...

So implementiert Webpack das Caching statischer Ressourcen

Inhaltsverzeichnis Einführung Unterscheiden Sie z...

Empfehlen Sie einen coolen blinkenden Alarmknopf

Die Wirkung ist wie folgt: Der Code lautet wie fo...

So stellen Sie eine Verbindung zum MySQL-Visualisierungstool Navicat her

Nach der Installation von Navicat Der folgende Fe...

Welche Regeln gelten für den Kontext in JavaScript-Funktionen?

Inhaltsverzeichnis 1. Regel 1: Objekt.Methode() 1...