HTML ondragleave Attribute

HTML ondragleave Attribute fires when a draggable element leaves a valid drop target. It helps in dragging the elements and is entering or leaving a drop target. Drag and drop feature is very popular in HTML 5. Use CSS property when the element is draggable and enter into the drop target.

HTML ondragleave Attribute

This attribute can be applied to all the HTML elements. Remember that Images and links are by default draggable.

Syntax: <element ondragleave = “script”> 

There are many event attributes that are used, and can occur, in the different stages of a drag and drop operation:

Events fired on the draggable target (the source element)

  • ondragstart – fires when the user starts to drag an element
  • ondrag – fires when an element is being dragged
  • ondragend – fires when the user has finished dragging the element

Events fired on the drop target

  • ondragenter – fires when the dragged element enters the drop target
  • ondragover – fires when the dragged element is over the drop target
  • ondragleave – fires when the dragged element leaves the drop target
  • ondrop – fires when the dragged element is dropped on the drop target

Browser Support

The HTML ondragleave attribute is supported by the following browsers:

  • Chrome-4.0
  • Firefox-3.5
  • Internet Explorer-9.0
  • Safari-6.0
  • Opera-12.0

Example:

<!DOCTYPE HTML>
<html>
<head>
<style>
.droptarget {
  float: left; 
  width: 100px; 
  height: 35px;
  margin: 15px;
  margin-right: 100px;
  padding: 10px;
  border: 1px solid #aaaaaa;
}
</style>
</head>
<body>

<p>Drag the p element back and forth between the two rectangles:</p>

<div class="droptarget" ondrop="drop(event)" ondragenter="dragEnter(event)" ondragleave="dragLeave(event)" ondragover="allowDrop(event)">
  <p ondragstart="dragStart(event)" draggable="true" id="dragtarget">Drag me!</p>
</div>

<div class="droptarget" ondragenter="dragEnter(event)" ondragleave="dragLeave(event)" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

<p style="clear:both;"></p>

<p id="demo"></p>

<script>
function dragStart(event) {
  event.dataTransfer.setData("Text", event.target.id);
}

function dragEnter(event) {
  if ( event.target.className == "droptarget" ) {
    event.target.style.border = "3px dotted red";
    document.getElementById("demo").innerHTML = "Entered the dropzone";
  }
}

function dragLeave(event) {
  if ( event.target.className == "droptarget" ) {
    event.target.style.border = "";
    document.getElementById("demo").innerHTML = "Left the dropzone";
  }
}

function allowDrop(event) {
  event.preventDefault();
}

function drop(event) {
  event.preventDefault();
  var data = event.dataTransfer.getData("Text");
  event.target.appendChild(document.getElementById(data));
}
</script>
</body>
</html>

Output:

HTML ondragleave attribute