InfoHeap
Tech
Navigation
  • Home
  • Tutorials
    • CSS tutorials & examples
    • CSS properties
    • Javascript cookbook
    • Linux/Unix Command Line
    • Mac
    • PHP
      • PHP functions online
      • PHP regex
    • WordPress
  • Online Tools
    • Text utilities
    • Online Lint Tools
search

Javascript

    Javascript strings

    • Javascript - check if string is number
    • Javascript - parseInt
    • string ends with check
    • string starts with check

    Javascript Array

    • array forEach
    • array append item
    • array remove last item
    • array prepend item
    • array remove first item
    • create array from 0 to N-1
    • convert array to json string

    Javascript control flow

    • for-in loop to iterate over keys of javascript object

    Javascript DOM

    • Javascript - DOM appendChild example
    • Javascript - get computed style of an element
    • Javascript - how to view text inside DOM element
    • Javascript - img onload examples
    • Javascript - ready vs on load event handler example
    • Javascript - use querySelector to set dom element html
    • Javascript DOMContentLoaded listener example
    • Javascript event bubble vs capture
    • Javascript how to stop event propagation
    • Javascript onscroll event handler
    • Javascript onscroll event handler with throttling
    • Make an element draggable using Vanilla Javascript
    • Multiple onload handlers using vanilla Javascipt
    • Use universal selector to get all DOM nodes in vanilla Javascript
    • document querySelector examples
    • dump all handlers on window object

    Javascript Cookbook

    • Are Javascript functions objects?
    • Declare and invoke anonymous function
    • HTML5 drag and drop
    • JSLint on command line on Ubuntu
    • Javascript - call vs apply
    • Javascript - implement class using function
    • Javascript - iterate over function arguments
    • Javascript - print all methods of an object
    • Javascript - run a function at regular interval
    • Javascript - textarea and text input select all
    • Javascript arrow function examples
    • Javascript check if variable is defined
    • Javascript local and global variables
    • Javascript parse json string
    • Javascript prototype examples
    • Javascript settimeout example
    • Javascript sleep implementation
    • Requirejs - quickstart guide for beginners
    • catch errors using window.onerror
    • print javascript object to log

    Javascript libraries

    • AngularJS
    • CasperJS
    • PhantomJS
    • React
    • jQuery

    Javascript global functions

    • Javascript - Number function
     
    • Home
    • > Tutorials
    • > HTML5

    HTML5 drag and drop – move an element to dropzone

    on Mar 18, 2016

    HTML5 Drag and Drop interfaces enable applications to use drag and drop (using mouse) features in web browser. It involves dragging an element and dropping it to a drop zone (another element which allows dropping). This feature is mostly supported by Desktop browsers.

    HTML Drag and drop flow

    A basic drag and drop implementation involves the following flow:

    1. Make the element to be dragged draggable using attribute draggable as shown below:
      <p draggable="true">drag me</p>
    2. Implement ondragstart event handler on the element to be dragged. This handler can copy the Id of the element which initiated the drag.
      <p id="src" draggable="true" ondragstart="dragStartHandler(event)">Drag me</p>
      <script>
      function dragStartHandler(e) {
        e.dataTransfer.setData("my_element_id", e.target.id);
      }
      </script>
    3. Implement ondragover event handler on dropzone element. This will make drop effect when dragged element is in dropzone element. We can also customize the effect using event.dataTransfer.dropEffect. Note that we also need to call event.preventDefault() as default event handler does not allow dragging over an element.
      <div class="dropbox" ondragover="dragOverHandler(event)">Or Drop here</div>
      <script>
      function dragOverHandler(e) {
        e.preventDefault();
        e.dataTransfer.dropEffect = 'move';
      }
      </script>
    4. Implement ondrop event handler on dropzone element. This handler will move the dragged element.
      <div class="dropbox" ondragover="dragOverHandler(event)"
        ondrop="dropHandler(event)"">Drop here</div>
      <script>
      function dropHandler(e) {
        var elementId = e.dataTransfer.getData("my_element_id");
        e.target.appendChild(document.getElementById(elementId));
      }
      </script>

    Example – drag and drop – move element to dropzone

    <style type="text/css">
    .dropbox {
      width:100px; height:60px; margin:2px; background-color:lightgray;
    }
    </style>
    
    <div class="dropbox" ondragover="dragOverHandler(event)"
      ondrop="dropHandler(event)"">Drop here</div>
    <div class="dropbox" ondragover="dragOverHandler(event)"
      ondrop="dropHandler(event)" >Or drop here</div>
    <p id="src" draggable="true" ondragstart="dragStartHandler(event)">Drag me</p>
    
    <script>
    function dragStartHandler(e) {
      e.dataTransfer.setData("my_element_id", e.target.id);
    }
    function dragOverHandler(e) {
      e.preventDefault();
      e.dataTransfer.dropEffect = 'move';
    }
    function dropHandler(e) {
      var elementId = e.dataTransfer.getData("my_element_id");
      e.target.appendChild(document.getElementById(elementId));
    }
    </script>
    refresh done
    try it online

    Specification and Browser compatibility

    SpecificationStatusCategories
    Drag and DropWHATWG Living StandardHTML5
    Desktop
    ChromeFirefoxIEEdgeSafariOpera
    Yes 4+ Yes 3.5+ Partial 5.5+ Partial 12+ Yes 3.1+ Yes 12+
    Mobile
    Android ChromeAndroid FirefoxiOS SafariIE MobileOpera Mobile
    NoNoNoYes 10+ No
    source: caniuse.com

    Suggested posts:

    1. Install and setup Jenkins on Ubuntu Linux
    2. Javascript parse json string
    3. jQuery ui – make an element draggable
    4. How to make best use of Alexa
    5. Python itertools imap examples
    6. Javascript sleep implementation
    7. Multiple onload handlers using vanilla Javascipt
    8. Javascript event bubble vs capture
    Share this article: share on facebook share on linkedin tweet this submit to reddit
    Posted in Tutorials | Tagged HTML5, Javascript, Javascript cookbook, Tutorials, Web Development
    • Browse content
    • Article Topics
    • Article archives
    • Contact Us
    Popular Topics: Android Development | AngularJS | Apache | AWS and EC2 | Bash shell scripting | Chrome developer tools | Company results | CSS | CSS cookbook | CSS properties | CSS Pseudo Classes | CSS selectors | CSS3 | CSS3 flexbox | Devops | Git | HTML | HTML5 | Java | Javascript | Javascript cookbook | Javascript DOM | jQuery | Kubernetes | Linux | Linux/Unix Command Line | Mac | Mac Command Line | Mysql | Networking | Node.js | Online Tools | PHP | PHP cookbook | PHP Regex | Python | Python array | Python cookbook | SEO | Site Performance | SSH | Ubuntu Linux | Web Development | Webmaster | Wordpress | Wordpress customization | Wordpress How To | Wordpress Mysql Queries | InfoHeap Money

    Copyright © 2025 InfoHeap.

    Powered by WordPress