In diesem Artikel wird der spezifische Code für JavaScript zur Erzielung des Div-Maus-Drag-Effekts zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt Implementierungsprinzip: Wenn die Maus gedrückt wird, wird die Mauskoordinatenposition dynamisch gemäß dem Ereignis onmousemove abgerufen, um die Position des Div zu aktualisieren. Die Implementierungsvoraussetzung ist, dass das Div einen Positionierungseffekt haben muss, da es sonst nicht verschoben werden kann. HTML <div Klasse="Box"></div> CSS-Stile .Kasten { Position: absolut; Breite: 200px; Höhe: 200px; Hintergrund: rot; } Lassen Sie uns zunächst die Anforderungen analysieren. Diese Anforderung besteht darin, dass Sie das Div nur verschieben und seine Position auf der Seite ändern können, wenn beim Klicken die Maus gedrückt wird. Wenn Sie die Maus loslassen, können Sie sie nicht mehr bewegen. Es gibt hier also drei Zustände der Maus, nämlich wenn die Maus gedrückt wird (Mousedown-Event), wenn sie bewegt wird (Mousemove-Event) und wenn sie losgelassen wird (Mouseup-Event). Es gibt also drei Ereignisse im js-Teil. JS-Teil var box = document.getElementsByClassName("box")[0]; //Element abrufen var x, y; //Koordinaten von div speichern var isDrop = false; //Bewegungszustand beurteilen Zum Bewegen die Maus drücken Wenn die Maus gedrückt wird box.onmousedown = Funktion(e) { var e = e || window.event; //Verwenden Sie das Ereignisobjekt, um die Mausposition abzurufen x = e.clientX - box.offsetLeft; y = e.clientY - box.offsetTop; isDrop = true; //Auf true setzen, um anzuzeigen, dass es verschoben werden kann} e.clientX ist die Position der Maus auf der X-Achse, e.clientY ist die Position der Maus auf der Y-Achse, box.offsetLeft erhält den Abstand zwischen dem Div und der linken Seite und box.offsetTop erhält den Abstand zwischen dem Div und der oberen Seite. Wie in der folgenden Abbildung gezeigt, können wir mit e.clientX - box.offsetLeft den Abweichungswert zwischen Koordinatenpunkt x und box.offsetLeft ermitteln. Wir müssen diesen Abweichungswert vom Koordinatenpunkt x abziehen, um die tatsächliche Distanz zu erhalten, um die sich das Div relativ nach links bewegt hat. In ähnlicher Weise erhält e.clientY - box.offsetTop den Distanzversatz von oben. Wenn sich die Maus bewegt Um zu verhindern, dass durch eine zu schnelle Mausbewegung das Ereignis nicht korrekt verarbeitet werden kann, wird das Ereignis an das Dokument gebunden. Dokument.onmousemove = Funktion(e) { //Ist es im beweglichen Zustand if(isDrop) { var e = e || Fenster.Ereignis; var moveX = e.clientX - x; //Abstand nach links ermitteln var moveY = e.clientY - y; //Abstand nach oben ermitteln box.style.left = moveX + "px"; box.style.top = moveY + "px"; }anders{ zurückkehren ; } } e.clientX – x-Mauspunktkoordinaten minus Abweichung ergeben den Abstand vom Div nach links, e.clientY – y-Mauspunktkoordinaten minus Abweichung ergeben den Abstand vom Div nach oben. Ordnen Sie die linke und obere Ecke des Div neu zu Wenn die Maus losgelassen wird Um zu verhindern, dass zu schnelle Mausbewegungen nicht richtig verarbeitet werden, ist das Ereignis an das Dokument gebunden. Dokument.onmouseup = Funktion() { isDrop = false; //Auf „false“ setzen, um Bewegung zu verhindern} Jetzt kann das Div gezogen werden, Sie müssen jedoch eine Bereichsbegrenzung hinzufügen. Andernfalls wird das Div aus der Seite herausgezogen, was nicht akzeptabel ist. Daher müssen Sie eine Bereichsbegrenzung hinzufügen. Die maximale mobile Breite des Div ist die Seitenbreite minus der Div-Breite, und das Minimum ist Null. Die maximale Höhe ist die Seitenhöhe minus der Div-Höhe, und das Minimum ist Null. Der Umfang sollte also folgendermaßen geschrieben werden Dokument.onmousemove = Funktion(e) { var e = e || Fenster.Ereignis; wenn(ist) { var moveX = e.clientX - x; var moveY = e.clientY - y; var maxX = document.documentElement.clientWidth - box.offsetWidth; // Maximale Distanz, die die X-Achse zurücklegen kann var maxY = document.documentElement.clientHeight - box.offsetHeight; // Maximale Distanz, die die Y-Achse zurücklegen kann // Bereichsgrenze Wenn das Minimum genommen wird, wird das Maximum genommen. Wenn das Maximum genommen wird, wird das Minimum genommen if (moveX < 0) { VerschiebeX=0 }sonst wenn(moveX>maxX){ verschiebeX=maxX; } wenn(moveY < 0) { bewegeY=0; }sonst wenn(moveY>maxY){ bewegeY=maxY; } box.style.left = moveX + "px"; box.style.top = moveY + "px"; } anders { zurückkehren; } } Dieser Effekt wird perfekt erzielt, wir können ihn aber auch so erzielen, wenn der Umfang begrenzt ist. Der Umfang kann wie folgt ausgedrückt werden //Bereichsgrenze Minimum zu Maximum Maximum Maximum zu Minimum if (moveX < 0) { ZugX = Math.max(0, ZugX) // 0 }sonst wenn(moveX>maxX){ bewegeX=Math.min(bewegeX,maxX);//maxX } wenn(moveY < 0) { bewegeY = Math.max(0,bewegeY) //0 }sonst wenn(moveY>maxY){ bewegeY=Math.min(bewegeY,maxY); //maxY } Wir können also schreiben verschiebenX=Math.min(maxX, Math.max(0, verschiebenX)); bewegeY=Math.min(maxY, Math.max(0,bewegeY)); Dann der komplette Code <!DOCTYPE html> <html> <Kopf> <meta charset="UTF-8"> <Titel></Titel> <Stil> .Kasten { Position: absolut; Breite: 200px; Höhe: 200px; Hintergrund: rot; } </Stil> </Kopf> <Text> <div Klasse="Box"></div> <Skript> var box = document.getElementsByClassName("box")[0]; //Element abrufen var x, y; //Die Maus ist vom linken und oberen Rand des div versetzt var isDrop = false; //Bewegungszustand beurteilen Die Maus muss gedrückt werden, um sich zu bewegen box.onmousedown = function(e) { var e = e || window.event; //Verwenden Sie das Ereignisobjekt, um die Mausposition abzurufen x = e.clientX - box.offsetLeft; y = e.clientY - box.offsetTop; isDrop = true; //Auf true setzen, um anzuzeigen, dass es verschoben werden kann} Dokument.onmousemove = Funktion(e) { //Ist es im beweglichen Zustand if(isDrop) { var e = e || Fenster.Ereignis; var moveX = e.clientX - x; //Bewegungsdistanz von links abrufen var moveY = e.clientY - y; //Bewegungsdistanz von oben abrufen //Maximale Bewegungsdistanz var maxX = document.documentElement.clientWidth - box.offsetWidth; var maxY = document.documentElement.clientHeight - box.offsetHeight; //Bereichsbegrenzung: Wenn die Bewegungsdistanz am geringsten ist, nimm das Maximum; wenn die Bewegungsdistanz am größten ist, nimm das Minimum //Bereichsbegrenzungsmethode 1 /* if (moveX < 0) { moveX = 0 } sonst wenn(moveX > maxX) { bewegeX = maxX; } wenn(moveY < 0) { bewegeY = 0; } sonst wenn(moveY > maxY) { bewegeY = maxY; } */ //Bereichsbegrenzungsmethode 2 moveX=Math.min(maxX, Math.max(0,moveX)); bewegeY=Math.min(maxY, Math.max(0,bewegeY)); box.style.left = moveX + "px"; box.style.top = moveY + "px"; } anders { zurückkehren; } } Dokument.onmouseup = Funktion() { isDrop = false; //Auf „false“ setzen, um Bewegung zu verhindern} </Skript> </body> </html> 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:
|
<<: Parameter, um Iframe transparent zu machen
>>: Detailliertes Tutorial zur Konfiguration von Docker nginx + https-Subdomains
Ich habe einen Artikel des Yahoo-Teams über die O...
Inhaltsverzeichnis 1. Baidu-Enzyklopädie 1. MySQL...
Jiedaibao ist eine Softwareplattform für Handykre...
Inhaltsverzeichnis Überblick Code-Implementierung...
Inhaltsverzeichnis Fall 1: Fall 2: Fall 3: Um es ...
Dockerfile ist eine Datei, die zum Erstellen eine...
1. Datensicherung 1. Verwenden Sie den Befehl mys...
In diesem Artikel finden Sie ein grafisches Tutor...
Inhaltsverzeichnis Überblick Die Geschichte der C...
Wenn Komponenten detaillierter werden, treten Sit...
Aktuelle Erfahrungen mit der Installation der kos...
So verwenden Sie CSS-Variablen in JS Verwenden Si...
In diesem Blog besprechen wir zehn Leistungseinst...
1. Erstellen Sie zunächst eine Datei hello-world....
Das Jupyter-Notebook wird unter dem Docker-Contai...