Inhaltsverzeichnis
Data()" >clearData()
Heim Web-Frontend H5-Tutorial HTML5-Tutorial für Fortgeschrittene – Drag-and-Drop-API zum Implementieren der Drag-and-Drop-Sortierung

HTML5-Tutorial für Fortgeschrittene – Drag-and-Drop-API zum Implementieren der Drag-and-Drop-Sortierung

May 12, 2017 pm 12:02 PM

Vorwort

HTML5 bietet eine direkte Drag-and-Drop-API großartig Es ist für uns praktisch, den Drag-and-Drop-Effekt zu realisieren. Wir müssen nicht viele JS schreiben. Wir können verschiedene Drag-and-Drop-Funktionen realisieren, indem wir einfach auf das Drag-and-Drop-Ereignis hören Element.

Wenn Sie ein Element per Drag & Drop verschieben möchten, müssen Sie das Draggable-Attribut des Elements auf „true“ setzen. Wenn das Attribut „false“ ist, ist Drag & Drop nicht zulässig. Sowohl für das img-Element als auch für das a-Element ist das Draggable-Attribut standardmäßig auf true gesetzt, sodass sie direkt per Drag & Drop verschoben werden können. Wenn Sie diese beiden Elemente nicht per Drag & Drop verschieben möchten, setzen Sie das Attribut einfach auf false.

Drag-and-Drop-Ereignisse

Drag-and-Drop-Ereignisse werden von verschiedenen Elementen generiert. Wenn ein Element per Drag-and-Drop verschoben wird, durchläuft es möglicherweise viele Elemente und erreicht schließlich das Element, das Sie platzieren möchten. Hier nenne ich das gezogene Element vorübergehend das Quellobjekt, das übergebene Element das Prozessobjekt und das angekommene Element das Zielobjekt. Verschiedene Objekte erzeugen unterschiedliche Drag-and-Drop-Ereignisse.

Quellobjekt:


  • Dragstart: Das Quellobjekt beginnt mit dem Ziehen und Ablegen.

  • Ziehen: Während des Drag-and-Drop-Vorgangs des Quellobjekts.

  • dragend: Das Drag & Drop des Quellobjekts endet.

  • Prozessobjekt:

  • dragenter: Das Quellobjekt beginnt, in den Bereich des Prozessobjekts einzutreten.

  • Dragover: Das Quellobjekt bewegt sich innerhalb des Geltungsbereichs des Prozessobjekts.

  • dragleave: Das Quellobjekt verlässt den Gültigkeitsbereich des Prozessobjekts.

  • Zielobjekt:

  • Drop: Das Quellobjekt wird per Drag & Drop in das Zielobjekt gezogen.

  • <p id="source" draggable="true">a元素</p>
    <p id="process">b元素</p>
    <p id="target">c元素</p>
    
    <script>
        var source = document.getElementById(&#39;source&#39;),     // a元素
            process = document.getElementById(&#39;process&#39;),   // b元素
            target = document.getElementById(&#39;target&#39;);     // c元素
        
        source.addEventListener(&#39;dragstart&#39;,function(ev){   // dragstart事件由a元素产生
            console.log(&#39;a元素开始被拖动&#39;);
        },false)
    
        process.addEventListener(&#39;dragenter&#39;,function(ev){  // dragenter事件由b元素产生
            console.log(&#39;a元素开始进入b元素&#39;);
        },false)
        process.addEventListener(&#39;dragleave&#39;,function(ev){  // dragleave事件由b元素产生
            console.log(&#39;a元素离开b元素&#39;);
        },false)
    
        target.addEventListener(&#39;drop&#39;,function(ev){        // drop事件由c元素产生
            console.log(&#39;a元素拖放到c元素了&#39;);
            ev.preventDefault();
        },false)
        document.ondragover = function(e){e.preventDefault();}
    </script>
    Nach dem Login kopieren
    dataTransfer-Objekt

    stellt in allen Drag-and-Drop-Ereignissen ein Datenübertragungsobjekt dataTransfer bereit, das zum Übertragen von Daten zwischen dem Quellobjekt und dem Zielobjekt verwendet wird. Als Nächstes lernen wir die Methoden und Eigenschaften dieses Objekts kennen, um zu verstehen, wie es Daten überträgt.

    setData()

    Diese Methode speichert Daten im dataTransfer-Objekt. Empfängt zwei Parameter. Der erste ist eine Zeichenfolge, die den Typ der zu speichernden Daten angibt:

  • text/plain: Text.

  • text/html: HTML-Text.

  • text/

    xml: XML-Text.

  • text/uri-list: URL-Liste, jede URL ist eine Zeile.

  • Der zweite Parameter sind die zu speichernden Daten. Zum Beispiel:

    event.dataTransfer.setData(&#39;text/plain&#39;,&#39;Hello World&#39;);
    Nach dem Login kopieren
    getData()

    Diese Methode liest Daten aus dem dataTransfer-Objekt. Der Parameter ist der in setData angegebene Datentyp. Zum Beispiel:

    event.dataTransfer.getData(&#39;text/plain&#39;);
    Nach dem Login kopieren

    clearData()

    Diese Methode löscht die im dataTransfer-Objekt gespeicherten Daten. Der Parameter ist optional und entspricht dem Datentyp. Wenn der Parameter leer ist, werden alle Datentypen gelöscht. Zum Beispiel:

    event.dataTransfer.clearData();
    Nach dem Login kopieren
    setDragImage()

    Diese Methode legt das Drag-and-Drop-Symbol mithilfe des img-Elements fest. Empfängt drei Parameter, der erste ist das Symbolelement, der zweite ist die X-Achsenverschiebung des Symbolelements vom Mauszeiger und der dritte ist die Y-Achsenverschiebung des Symbolelements vom Mauszeiger. Zum Beispiel:

    var source = document.getElementById(&#39;source&#39;),
        icon = document.createElement(&#39;img&#39;);
    
    icon.src = &#39;img.png&#39;;
    
    source.addEventListener(&#39;dragstart&#39;,function(ev){
        ev.dataTransfer.setDragImage(icon,-10,-10)
    },false)
    Nach dem Login kopieren
    effectAllowed- und dropEffect-Attribute

    Diese beiden Attribute werden kombiniert, um den visuellen Effekt von Drag & Drop festzulegen.

    Es ist erwähnenswert: IE unterstützt keine dataTransfer-Objekte. Ja, es wird unabhängig von der IE-Version nicht unterstützt.

    Drag-and-Drop-Sortierung implementieren

    Wir sind bereits mit der Verwendung der Drag-and-Drop-API vertraut. Lassen Sie uns eine einfache Drag-and-Drop-Sortierung implementieren, die auch in der Praxis üblich ist Projekte. Lassen Sie uns zunächst die Idee klären:

  • In einer Liste kann jedes Element per Drag-and-Drop verschoben werden. Dann müssen Sie zunächst das Draggable-Attribut für jedes Element auf true setzen.

  • Hören Sie sich das Dragstart-Ereignis jedes Elements an und formatieren Sie das Quellobjekt, um es zu unterscheiden.

  • Hören Sie sich das Dragenter-Ereignis jedes Elements an. Wenn das Quellobjekt in das aktuelle Element eintritt, fügen Sie das Quellobjekt vor dem Element hinzu. Auf diese Weise werden die nachfolgenden Elemente vom Quellobjekt verdrängt, wodurch ein Sortiereffekt erzielt wird.

  • Aber Sie werden feststellen, dass das Quellobjekt nicht an letzter Stelle, sondern nur an vorletzter Stelle stehen kann. Zu diesem Zeitpunkt müssen Sie das Dragleave-Ereignis abhören. Wenn das Prozessobjekt das letzte Element ist, verlässt das Quellobjekt das Prozessobjekt und fügt dann das Quellobjekt am Ende hinzu.

  • Der Hauptcode lautet wie folgt:

    var source = document.querySelectorAll(&#39;.list&#39;),
        dragElement = null;
    
    for(var i = 0; i < source.length; i++){
        source[i].addEventListener(&#39;dragstart&#39;,function(ev){
            dragElement = this;
        },false);
    
        source[i].addEventListener(&#39;dragenter&#39;, function(ev){
            if(dragElement != this){
                this.parentNode.insertBefore(dragElement,this);
            }
        }, false)
    
        source[i].addEventListener(&#39;dragleave&#39;, function(ev){
            if(dragElement != this){
                if(this == this.parentNode.lastElementChild || this == this.parentNode.lastChild){
                    this.parentNode.appendChild(dragElement);
                }
            }
        }, false)
    };
    
    document.ondragover = function(e){e.preventDefault();}
    document.ondrop = function(e){e.preventDefault();}
    Nach dem Login kopieren
    Vollständige Codeadresse: Drag-Demo

    Kompatibel

    Hauptsächlich kompatibel mit IE Nicht Großartig, aber zumindest ist es mit der Drag-Sortierung oben in IE10 kompatibel.

    Und in meinem einfachen Experiment habe ich herausgefunden, dass das Dragleave-Ereignis nicht ausgelöst wird, wenn das Element im IE nicht auf

    Höhe eingestellt ist.

    Der wichtigere Punkt ist, dass sie auf iOS und Android völlig inkompatibel sind. Glücklicherweise gibt es ein Plug-in, das die perfekte Kompatibilität mit mobilen Geräten ermöglicht.

    Plug-in-Adresse: ios-html5-drag-drop-shim

    Sie müssen das Plug-in nur in den Originalcode einführen, um das Ziehen auf dem mobilen Endgerät zu realisieren.

    <script>
    var iosDragDropShim = { enableEnterLeave: true }
    </script>
    <script src="vendor/ios-drag-drop.js"></script>
    Nach dem Login kopieren
[Verwandte Empfehlungen]

1.

Kostenloses h5-Online-Video-Tutorial

2. HTML5-Vollversionshandbuch

3. php.cn Original-HTML5-Video-Tutorial

Das obige ist der detaillierte Inhalt vonHTML5-Tutorial für Fortgeschrittene – Drag-and-Drop-API zum Implementieren der Drag-and-Drop-Sortierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles