JavaScript zum Erzielen eines einfachen Drag-Effekts

JavaScript zum Erzielen eines einfachen Drag-Effekts

In diesem Artikel wird der spezifische JavaScript-Code zur Erzielung des Drag-Effekts zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

1.1 Grundlegende Effekte des Ziehens

Ideen:

Wenn die Maus auf die Box gedrückt wird, ist sie bereit zur Bewegung (das Ereignis wird dem Objekt hinzugefügt).

Wenn die Maus bewegt wird, folgt die Box der Maus (das Ereignis wird der Seite hinzugefügt)

Wenn die Maus angehoben wird, stoppt die Bewegung der Box (das Ereignis wird der Seite hinzugefügt).

var o = document.querySelector('div');
​
        //Maus runter o.onmousedown = function (e) {
            //Mausposition relativ zur Box var offsetX = e.clientX - o.offsetLeft;
            var offsetY = e.clientY - o.offsetTop;
            //Mausbewegung document.onmousemove = function (e) {
                o.style.left = e.clientX - offsetX + "px";
                o.style.top = e.clientY - offsetY + "px";
            }
            //Maus hoch document.onmouseup = function () {
                Dokument.onmousemove = null;
                Dokument.onmouseup = null;
            }
}

1.2 Drag & Drop-Probleme

Wenn in der Box Text angezeigt wird oder die Box selbst ein Bild ist, kann dies aufgrund des Standardverhaltens des Browsers (Text und Bilder können gezogen werden) durch Festlegen von „return false“ erfolgen. Das Abfangen des Standardverhaltens ist in früheren IE-Versionen jedoch nicht anwendbar. Sie können das IE-Problem durch die globale Erfassung lösen.

1.2.1 Globale Erfassung

Die globale Erfassung ist nur auf IE-Browser mit niedrigerer Version anwendbar

<button>btn1</button>
    <button>btn2</button>
    <Skript>
        var bts = document.querySelectorAll('Schaltfläche')
​
        bts[0].onclick = Funktion () {
            konsole.log(1);
        }
        bts[1].onclick = Funktion () {
            konsole.log(2);
        }
​
        // bts[0].setCapture() //Globale Erfassung hinzufügen // bts[0].releaseCapture() ; //Globale Erfassung freigeben</script>

Sobald eine globale Erfassung für einen angegebenen Knoten hinzugefügt wurde, lösen andere Elemente auf der Seite nicht mehr denselben Ereignistyp aus.

1.2.2 Vollversion von Drag & Drop

var o = document.querySelector('div');
​
        //Maus runter o.onmousedown = function (e) {
            if (o.setCapture) { //IE niedrigere Version o.setCapture()
            }
            e = e || Fenster.Ereignis
            //Mausposition relativ zur Box var offsetX = e.clientX - o.offsetLeft;
            var offsetY = e.clientY - o.offsetTop;
            //Mausbewegung document.onmousemove = function (e) {
                e = e || Fenster.Ereignis
                o.style.left = e.clientX - offsetX + "px";
                o.style.top = e.clientY - offsetY + "px";
            }
            //Maus hoch document.onmouseup = function () {
                Dokument.onmousemove = null;
                Dokument.onmouseup = null;
                wenn (o.releaseCapture) {
                    o.releaseCapture(); //Globale Erfassung freigeben}
            }
            return false; //Standardverhalten von Standardbrowsern}

1.3 Ziehen Sie den Rand

Breite des sichtbaren Bereichs:

Höhe des sichtbaren Bereichs:

//Bildschirmhöhe// var h=document.documentElement.clientHeight
// var w = Dokument.documentElement.clientWidth;


// konsole.log(h,w);

analysieren:

Maximal links: Breite des sichtbaren Bereichs – Breite der Box

Mindestanzahl übrig: 0

Mindesthöhe: 0

Maximale Oberseite: Höhe des sichtbaren Bereichs - Höhe der Box

1.4 Kollision

Der Schlüssel zur Kollision liegt darin, den kritischen Wert zu finden.

Nennen Sie die vier Seiten der beiden Objekte: L1, T1, R1, B1 und L2, T2, R2, B2

Wenn L1 > R2 || T1 > B2 || R1 < L2 || B1 < T2, dann gibt es keine Kollision.

<div Klasse="eins">
​
    </div>
    <div Klasse="zwei"></div>
    <Skript>
        var o = document.querySelector('.one');
        var ox = document.querySelector('.zwei');
​
        //Maus runter o.onmousedown = function (e) {
            if (o.setCapture) { //IE niedrigere Version o.setCapture()
            }
            e = e || Fenster.Ereignis
            //Mausposition relativ zur Box var offsetX = e.clientX - o.offsetLeft;
            var offsetY = e.clientY - o.offsetTop;
            //Maximale linke und obere Ränder (Grenzen) berechnen
            var maxLeft = document.documentElement.clientWidth - this.offsetWidth;
            var maxTop = document.documentElement.clientHeight - this.offsetHeight;
            //Kollision var L2 = ox.offsetLeft;
            var T2 = ox.offsetTop;
            var R2 = L2 + ox.offsetWidth;
            var B2 = T2 + ox.offsetHeight
            //Mausbewegung document.onmousemove = function (e) {
                e = e || Fenster.Ereignis
                var x = e.clientX - offsetX;
                var y = e.clientY - offsetY;
​
                //Berechnen Sie die Grenze, wenn (x <= 0) x = 0
                wenn (y <= 0) y = 0
                wenn (x >= maxLeft) x = maxLeft;
                wenn (y >= maxTop) y = maxTop;
​
                o.style.left = x + "px";
                o.style.top = y + "px";
                //Kollision berechnen var L1 = o.offsetLeft;
                var T1 = o.offsetTop;
                var R1 = L1 + o.OffsetWidth;
                var B1 = T1 + o.OffsetHeight;
                if (L1 > R2 || T1 > B2 || R1 < L2 || B1 < T2) { // Keine Kollision ox.style.backgroundColor = "blau"
                } anders {
                    ox.style.backgroundColor = "orange"
                }
            }
            //Maus hoch document.onmouseup = function () {
                Dokument.onmousemove = null;
                Dokument.onmouseup = null;
                wenn (o.releaseCapture) {
                    o.releaseCapture(); //Globale Erfassung freigeben}
            }
            return false; //Standardverhalten von Standardbrowsern}
​
</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:
  • 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
  • Beispiel einer Drag-and-Drop-Upload-Funktion für Dateien, die von JS implementiert wurde
  • Verwenden von Javascript zum Implementieren von Maus-Drag-Ereignissen
  • JavaScript implementiert den horizontalen Fortschrittsbalken-Drag-Effekt
  • js perfekter Div Drag-Beispielcode
  • JS implementiert die Touchscreen-Drag-Funktion auf Mobilgeräten

<<:  Tutorial zum schnellen Bereitstellen eines Nebula Graph-Clusters mit Docker Swarm

>>:  So überspringen Sie Fehler bei der MySQL-Master-Slave-Replikation

Artikel empfehlen

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.27

Detailliertes Download-, Installations- und Konfi...

Detaillierte Erklärung zur Verwendung von Join zur Optimierung von SQL in MySQL

0. Bereiten Sie relevante Tabellen für die folgen...

Vue implementiert Card-Flip-Karussellanzeige

Karussellanzeige der Vue-Karte beim Umschalten de...

Schreiben Sie ein React-ähnliches Framework von Grund auf

Kürzlich habe ich im Internet den Artikel „Build ...

Docker-Netzwerkmodus und Konfigurationsmethode

1. Docker-Netzwerkmodus Wenn Docker Run einen Doc...

Vue-Methode zum Überprüfen, ob der Benutzername verfügbar ist

In diesem Artikelbeispiel wird der spezifische Co...

Vue-Direktiven v-html und v-text

Inhaltsverzeichnis 1. Anweisungen zum Rendern von...

Lösen Sie das Problem des Mac Docker x509-Zertifikats

Frage Kürzlich musste ich mich bei einem privaten...

So überspringen Sie Fehler bei der MySQL-Master-Slave-Replikation

1. Traditionelle Binlog-Master-Slave-Replikation,...

So verstehen Sie die semantische HTML-Struktur

Ich glaube, jeder kennt HTML und CSS, kennt die T...

JavaScript-Verlaufsobjekt erklärt

Inhaltsverzeichnis 1. Routennavigation 2. API zur...