HTML5 drag and drop
- Föregående sida HTML5 geolokalisering
- Nästa sida HTML5 webb lagring

Dra CodeW3C.com-bilden till rektangeln.
Drag-and-drop
Drag-and-drop (Drag och Drop) är en mycket vanlig egenskap. Det innebär att du kan greppa något och dra det till en annan plats.
Drag-and-drop är en del av HTML5-standarden: alla element är flyttbara.
Webbläsarstöd
Tal i tabellen indikerar den första webbläsarens version som helt stöder drag-and-drop.
API | |||||
Drag-and-drop | 4.0 | 9.0 | 3.5 | 6.0 | 12.0 |
HTML drag-and-drop-exempel
Följande är ett enkelt exempel om drag-and-drop:
Exempel
<!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>
Det kan verka lite komplext, men låt oss undersöka alla olika delar av drag-and-drop-händelserna.
Sätt elementet som flyttbar
Först: För att sätta en element som flyttbar, sätt draggable-attributet till true:
<img draggable="true">
Innehåll för drag-and-drop - ondragstart och setData()
Därefter specificeras vad som ska hända när elementet dras.
I det tidigare exemplet anropas ondragstart-attributet en drag(event)-funktion som specificerar vilket data som ska dras.
dataTransfer.setData() metoden sätter innehållet av den flyttbara datans datatyp och värde:
function drag(ev) { ev.dataTransfer.setData("text", ev.target.id); }
I detta exempel är datatypen "text" och värdet ID:t för den flyttbara elementen ("drag1").
Var att dra till - ondragover
Ondragover-händelsen definierar var de dragade data kan placeras.
Som standard kan data/element inte placeras i andra element. För att implementera drag and drop måste vi förhindra denna standardhantering av elementen.
Denna uppgift utförs av metoden event.preventDefault() för ondragover-händelsen:
event.preventDefault()
Placera - ondrop
En drop-event utlöses när den dragade data släpps.
I föregående exempel anropas ondrop-attribut en funktion, drop(event):
function drop(ev) { ev.preventDefault(); var data = ev.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); }
Kodförklaring:
- Anropa preventDefault() för att förhindra standardhanteringen av data av webbläsaren (standardbeteendet för drop-evenemanget är att öppna som länk)
- Få tag på de dragade data genom metoden dataTransfer.getData(). Denna metod returnerar alla data som har satts till samma typ i setData() -metoden
- De dragade data är id:t för det dragade elementet ("drag1")
- Lägg till den dragade elementet till det placerade elementet
Mer exempel
Dra och släpp bilder
Hur man drar och släpper bilderna mellan två <div>-element:
Dra CodeW3C.com-bilden till rektangeln.
- Föregående sida HTML5 geolokalisering
- Nästa sida HTML5 webb lagring