πŸŽ‰ 75% of content is free forever β€” Unlock Premium from $10/mo β†’
CW
Search courses…
πŸ’Ό Servicesℹ️ Aboutβœ‰οΈ ContactView Pricing Plansfrom $10

Drag and Drop

Web Foundations🟒 Free Lesson

Advertisement

Drag and Drop

HTML5 drag and drop API, file drops, sortable lists, and custom drag images.

Overview

HTML5 provides native drag and drop functionality.

Key Concepts

  • Draggable Attribute β€” Make elements draggable
  • Drag Events β€” dragstart, drag, dragend
  • Drop Events β€” dragenter, dragover, drop
  • Data Transfer β€” Pass data between elements
  • File Drops β€” Handle file uploads

Code Examples

<div class="container">
  <div class="draggable" draggable="true" data-id="1">Item 1</div>
  <div class="draggable" draggable="true" data-id="2">Item 2</div>
  <div class="draggable" draggable="true" data-id="3">Item 3</div>
</div>

<div class="dropzone">Drop here</div>

<script>
const draggables = document.querySelectorAll('.draggable');
const dropzone = document.querySelector('.dropzone');

draggables.forEach(draggable => {
  draggable.addEventListener('dragstart', (e) => {
    e.dataTransfer.setData('text/plain', draggable.dataset.id);
    draggable.classList.add('dragging');
  });

  draggable.addEventListener('dragend', () => {
    draggable.classList.remove('dragging');
  });
});

dropzone.addEventListener('dragover', (e) => {
  e.preventDefault();
  dropzone.classList.add('dragover');
});

dropzone.addEventListener('dragleave', () => {
  dropzone.classList.remove('dragover');
});

dropzone.addEventListener('drop', (e) => {
  e.preventDefault();
  const id = e.dataTransfer.getData('text/plain');
  dropzone.appendChild(document.querySelector(`[data-id="${id}"]`));
  dropzone.classList.remove('dragover');
});

// File drop zone
const fileDropzone = document.getElementById('fileDropzone');

fileDropzone.addEventListener('dragover', (e) => {
  e.preventDefault();
});

fileDropzone.addEventListener('drop', (e) => {
  e.preventDefault();
  const files = e.dataTransfer.files;
  
  Array.from(files).forEach(file => {
    const reader = new FileReader();
    reader.onload = (event) => {
      console.log(file.name, event.target.result);
    };
    reader.readAsDataURL(file);
  });
});
</script>

Practice

Build a sortable list with drag and drop and file upload drop zone.

⭐

Premium Content

Drag and Drop

Unlock this lesson and 900+ advanced tutorials with a Premium plan.

🎯End-to-end Projects
πŸ’ΌInterview Prep
πŸ“œCertificates
🀝Community Access

Already a member? Log in

Need Expert Web Development Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement