HTML -zelfstudie

HTML HOME HTML-introductie HTML-editors HTML basis HTML-elementen HTML-kenmerken HTML-koppen HTML-alinea's HTML-stijlen HTML-opmaak HTML-citaten HTML-opmerkingen HTML-kleuren HTML-CSS HTML-links HTML-afbeeldingen HTML-favicon HTML-tabellen HTML-lijsten HTML-blok en inline HTML-klassen HTML-ID HTML-iframes HTML-JavaScript Paden voor HTML-bestanden HTML-kop HTML-indeling HTML-responsief HTML-computercode HTML-semantiek HTML-stijlgids HTML-entiteiten HTML-symbolen HTML-emoji's HTML-tekenset HTML-URL-codering HTML versus XHTML

HTML -formulieren

HTML-formulieren HTML-formulierkenmerken HTML-formulierelementen HTML-invoertypen HTML-invoerkenmerken Kenmerken HTML-invoerformulier

HTML -afbeeldingen

HTML-canvas HTML-SVG

HTML- media

HTML-media HTML-video HTML-audio HTML-plug-ins HTML-YouTube

HTML API's

HTML-geolocatie HTML slepen/neerzetten HTML-webopslag HTML-webwerkers HTML-SSE

HTML- voorbeelden

HTML-voorbeelden HTML-quiz HTML-oefeningen HTML-certificaat HTML-samenvatting HTML-toegankelijkheid

HTML- verwijzingen

HTML-taglijst HTML-kenmerken Algemene HTML-kenmerken Ondersteuning voor HTML-browser HTML-gebeurtenissen HTML-kleuren HTML-canvas HTML-audio/video HTML-documenttypen HTML-tekensets HTML-URL-codering HTML-taalcodes HTTP-berichten HTTP-methoden PX naar EM-omzetter Toetsenbord sneltoetsen

API voor slepen en neerzetten in HTML


In HTML kan elk element worden gesleept en neergezet.


Voorbeeld

W3Schools

Sleep de W3Schools-afbeelding naar de rechthoek.


Slepen en neerzetten

Slepen en neerzetten is een veel voorkomende functie. Het is wanneer u een object "pakt" en naar een andere locatie sleept.


Browserondersteuning

De getallen in de tabel geven de eerste browserversie aan die Drag and Drop volledig ondersteunt.

API
Drag and Drop 4.0 9.0 3.5 6.0 12.0

HTML-voorbeeld voor slepen en neerzetten

Het onderstaande voorbeeld is een eenvoudig voorbeeld van slepen en neerzetten:

Voorbeeld

<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">

</body>
</html>

Het lijkt misschien ingewikkeld, maar laten we alle verschillende onderdelen van een drag-and-drop-evenement eens doornemen.



Een element versleepbaar maken

Allereerst: om een ​​element versleepbaar te maken, stelt u het draggableattribuut in op true:

<img draggable="true">

Wat te slepen - ondragstart en setData()

Geef vervolgens op wat er moet gebeuren als het element wordt versleept.

In het bovenstaande voorbeeld ondragstartroept het attribuut een functie aan, drag(event), die specificeert welke gegevens moeten worden gesleept.

De dataTransfer.setData()methode stelt het gegevenstype en de waarde van de versleepte gegevens in:

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

In dit geval is het gegevenstype "tekst" en is de waarde de id van het versleepbare element ("drag1").


Waar te laten vallen - ondragover

De ondragovergebeurtenis geeft aan waar de gesleepte gegevens kunnen worden neergezet.

Standaard kunnen gegevens/elementen niet in andere elementen worden neergezet. Om een ​​drop toe te staan, moeten we de standaard afhandeling van het element voorkomen.

Dit wordt gedaan door de event.preventDefault()methode voor de ondragover-gebeurtenis aan te roepen:

event.preventDefault()

Doe de druppel - ondrop

Wanneer de gesleepte gegevens worden neergezet, vindt er een drop-gebeurtenis plaats.

In het bovenstaande voorbeeld roept het attribuut ondrop een functie aan, drop(event):

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}

Code uitgelegd:

  • Roep preventDefault() aan om te voorkomen dat de browser standaard met de gegevens omgaat (standaard is open als link bij neerzetten)
  • Haal de gesleepte gegevens op met de methode dataTransfer.getData(). Deze methode retourneert alle gegevens die op hetzelfde type waren ingesteld in de methode setData()
  • De versleepte gegevens zijn de id van het versleepte element ("drag1")
  • Voeg het gesleepte element toe aan het drop-element

Meer voorbeelden

Voorbeeld

Een afbeelding heen en weer slepen (en neerzetten) tussen twee <div>-elementen: