HTML - Drag & Drop API

Overview

Estimated time: 20–30 minutes

Example

<div id="drag" draggable="true">Drag me</div>
<div id="drop" style="border:1px dashed #888;padding:10px">Drop here</div>
<script>
  const drag = document.getElementById('drag');
  const drop = document.getElementById('drop');
  drag.addEventListener('dragstart', e => e.dataTransfer.setData('text/plain', 'payload'));
  drop.addEventListener('dragover', e => e.preventDefault());
  drop.addEventListener('drop', e => { e.preventDefault(); drop.textContent = e.dataTransfer.getData('text/plain'); });
</script>

Common Pitfalls

  • No keyboard alternative—consider buttons with JS handlers.