50/95

Highlight an element when dragging a file over it

Assume that we have a droppable element as below

<div id="droppable">
    ...
</div>

We will hightlight the element when user drags a file over it. For example, the element will have a dashed border which can be simulated by a CSS class:

.dragging {
    border: 4px dashed #ccc;
}

The dragging class will be added to the element when user drags file and moves it over the element:

// Query the element
const ele = document.getElementById('droppable');

ele.addEventListener('dragenter', function(e) {
    e.preventDefault();
    e.target.classList.add('dragging');
});

In similar events, the class is removed from the element when user moves the file out of the element, or drops it:

ele.addEventListener('dragover', function(e) {
    e.preventDefault();
});

ele.addEventListener('dragleave', function(e) {
    e.preventDefault();
    e.target.classList.remove('dragging');
});

ele.addEventListener('drop', function(e) {
    e.preventDefault();
    e.target.classList.remove('dragging');
});

The last thing, e.preventDefault() is used in the handlers to prevent the browser from executing the default action.

Demo
(source)

Might be useful