The drag
event is fired every few hundred milliseconds as an element or text selection is being dragged by the user.
The drag
event is fired every few hundred milliseconds as an element or text selection is being dragged by the user.
See this code in a JSFiddle demo or interact with it below.
<div class="dropzone"> <div id="draggable" draggable="true" ondragstart="event.dataTransfer.setData('text/plain',null)"> This div is draggable </div> </div> <div class="dropzone"></div> <div class="dropzone"></div> <div class="dropzone"></div>
body { /* Prevent the user selecting text in the example */ user-select: none; } #draggable { width: 200px; height: 20px; text-align: center; background: white; } .dropzone { width: 200px; height: 20px; background: blueviolet; margin-bottom: 10px; padding: 10px; }
var dragged; /* events fired on the draggable target */ document.addEventListener("drag", function(event) { }, false); document.addEventListener("dragstart", function(event) { // store a ref. on the dragged elem dragged = event.target; // make it half transparent event.target.style.opacity = .5; }, false); document.addEventListener("dragend", function(event) { // reset the transparency event.target.style.opacity = ""; }, false); /* events fired on the drop targets */ document.addEventListener("dragover", function(event) { // prevent default to allow drop event.preventDefault(); }, false); document.addEventListener("dragenter", function(event) { // highlight potential drop target when the draggable element enters it if (event.target.className == "dropzone") { event.target.style.background = "purple"; } }, false); document.addEventListener("dragleave", function(event) { // reset background of potential drop target when the draggable element leaves it if (event.target.className == "dropzone") { event.target.style.background = ""; } }, false); document.addEventListener("drop", function(event) { // prevent default action (open as link for some elements) event.preventDefault(); // move dragged elem to the selected drop target if (event.target.className == "dropzone") { event.target.style.background = ""; dragged.parentNode.removeChild( dragged ); event.target.appendChild( dragged ); } }, false);
Specification |
---|
HTML Standard # event-dnd-drag |
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
drag_event |
4 |
12 |
3.5
Firefox doesn't set the mouse coordinates during the drag event. See bug 505521.
|
10 |
12 |
3.1 |
No |
No |
No |
No |
11 |
No |
© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Document/drag_event