KoderSolutionKoderSolution LogoKoderSolution Logo
HomeArticlesTutorialsToolsRun CodeForumAI Lab
🌐

HTML

Topic Hub & Articles

HTML Introduction

5 min

HTML Editors

10 min

Recap Quiz

Gated

Milestone Assessment

HTML Basic

10 min

HTML Elements

10 min

HTML Attributes

10 min

HTML Headings

10 min

HTML Paragraphs

10 min

Recap Quiz

Gated

Milestone Assessment

HTML Styles

10 min

HTML Formatting

10 min

HTML Quotations

10 min

HTML Comments

10 min

HTML Colors

7 min

HTML CSS

10 min

Recap Quiz

Gated

Milestone Assessment

HTML Links

10 min

HTML Images

10 min

HTML Favicon

10 min

HTML Page Title

10 min

HTML Tables

10 min

Recap Quiz

Gated

Milestone Assessment

HTML Lists

10 min

HTML Block and Inline

10 min

HTML Classes

10 min

HTML ID

10 min

HTML Iframes

10 min

Recap Quiz

Gated

Milestone Assessment

HTML JavaScript

10 min

HTML File Paths

10 min

HTML Head

10 min

HTML Layout

10 min

HTML Responsive

10 min

Recap Quiz

Gated

Milestone Assessment

HTML Computercode

10 min

HTML Forms

10 min

Recap Quiz

Gated

Milestone Assessment

HTML Form Attributes

10 min

HTML Form Elements

10 min

HTML Input Types

10 min

HTML Input Attributes

10 min

Recap Quiz

Gated

Milestone Assessment

HTML Input Form Attributes

10 min

HTML Canvas

10 min

HTML SVG

10 min

Recap Quiz

Gated

Milestone Assessment

HTML Media Intro

10 min

HTML Video

10 min

HTML Audio

10 min

Recap Quiz

Gated

Milestone Assessment

HTML YouTube

10 min

HTML Geolocation

10 min

HTML Drag/Drop

10 min

HTML Local Storage

10 min

HTML Session Storage

10 min

HTML Web Workers

10 min

HTML SSE

10 min

HTML Semantics

10 min

HTML Accessibility

10 min

HTML Entities

10 min

HTML Symbols

10 min

HTML Emojis

10 min

HTML Charset

10 min

HTML URL Encode

10 min

Recap Quiz

Gated

Milestone Assessment

HTML XHTML

10 min

HTML Global Attributes

10 min

HTML Event Attributes

10 min

HTML Color Groups

10 min

Recap Quiz

Gated

Milestone Assessment

HTML URL Paths

10 min

HTML Summary

10 min

Progress
0%

0 / 60 Lessons

KoderSolutionKoderSolution LogoKoderSolution Logo

The world’s most advanced technical ecosystem for modern software engineers. Learn, build, and grow with next-generation developer tools and resources.

Facebook PageX (Twitter) ProfileYouTube ChannelContact Support

Engineering Newsletter

Subscribe for weekly software engineering tutorials, architecture guides, and developer tool updates.

Platforms

  • Technical Articles
  • Interactive Tutorials
  • AI Coding Lab
  • Developer Forum
  • Developer Tools

Pages

  • About Us
  • Contact Us
  • Privacy Policy
  • Terms of Service
  • Refund Policy
  • Disclaimer
  • Advertisement

Popular Topics

  • PHP
  • Laravel
  • Python
  • React.Js
  • MySQL
© 2026 KoderSolutionAll Rights Reserved
Developed Bymaksudur.dev
HTMLHTML APIs
Lesson

HTML Drag/Drop

10 min reading
Free Course

HTML Drag and Drop: Building Interactive Reorder and Drop Zones

The HTML Drag and Drop API lets visitors grab an element with a pointer and drop it onto a target container—ideal for Kanban boards, file upload drop zones, and sortable lists. You enable dragging with a single HTML attribute (draggable="true") and wire the transfer using JavaScript events.

The Core Drag-and-Drop Lifecycle

Three events drive a standard drag-and-drop workflow:

  1. dragstart: Fires when dragging begins. Store the dragged element's ID inside event.dataTransfer.setData('text/plain', id).
  2. dragover: Fires continuously while hovering over a drop zone. You must call event.preventDefault() inside dragover, because browsers block dropping by default.
  3. drop: Fires when the user releases the mouse over the target. Read the ID via event.dataTransfer.getData('text/plain') and append or process the item.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HTML Drag and Drop Demo</title>
    <style>
        .board { display: flex; gap: 16px; font-family: system-ui, sans-serif; }
        .zone { width: 180px; min-height: 110px; padding: 12px; border: 2px dashed #94a3b8; border-radius: 8px; }
        .task { padding: 10px; background: #2563eb; color: #fff; border-radius: 6px; cursor: grab; }
    </style>
</head>
<body>
    <div class="board">
        <div class="zone" id="todo">
            <div id="task-1" class="task" draggable="true">Write HTML Tests</div>
        </div>
        <div class="zone" id="done">Drop here for Done</div>
    </div>

    <script>
        const task = document.getElementById('task-1');
        const zones = document.querySelectorAll('.zone');

        task.addEventListener('dragstart', (e) => {
            e.dataTransfer.setData('text/plain', e.target.id);
        });

        zones.forEach((zone) => {
            zone.addEventListener('dragover', (e) => e.preventDefault());
            zone.addEventListener('drop', (e) => {
                e.preventDefault();
                const id = e.dataTransfer.getData('text/plain');
                const dragged = document.getElementById(id);
                if (dragged) zone.appendChild(dragged);
            });
        });
    </script>
</body>
</html>

Common Mistakes to Avoid

  • Forgetting e.preventDefault() in dragover: Without that single line, the drop event will never fire on the target box.
  • Relying only on drag-and-drop without keyboard buttons: Native HTML5 drag events do not support keyboard Tab/Arrow users or all mobile touch screens—always provide a "Move" button or a file upload input fallback.
  • Neglecting e.preventDefault() inside drop: In Firefox, skipping preventDefault() on drop can cause the browser to treat dragged text as a URL redirect.

Frequently Asked Questions

Which HTML elements are draggable by default?

Text selections, img elements, and links (a with href) are draggable by default; any other element needs draggable="true".

How do I handle dropped desktop files on a drop zone?

Read event.dataTransfer.files inside the drop event listener after calling event.preventDefault() on both dragover and drop.

Save Your Progress

Unlock Your
Full Potential.

Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.

Quick Access With

Enterprise-Grade Security Protocol

Try it Yourself

Experiment with the code from this lesson in our interactive playground.

Open Playground

Related Developer Tools & Topic Hub

HTML Topic Hub
HTML Formatter
Beautify and inspect HTML markup
CSS Formatter
Clean and format stylesheets
PX to REM Converter
Calculate responsive CSS units
All HTML Articles
Deep-dive guides, tips & discussions
PreviousHTML Geolocation
Continue JourneyNext: HTML Local Storage

Stuck on this lesson?

Join our community of senior developers.

Ask in Forum