JSFiddle - React, Tailwind, and code Playground
HTML
<div class="container">
<div class="column">
<h1>اسحب من هنا</h1>
<div class="item" draggable="true">عنصر 1</div>
<div class="item" draggable="true">عنصر 2</div>
<div class="item" draggable="true">عنصر 3</div>
<div class="item" draggable="true">عنصر 4</div>
</div>
<div class="column">
<h1>افلت هنا</h1>
</div>
</div>
CSS
.container{
display: flex;
gap: 30px;
}
.column{
flex-basis: 20%;
background: #ddd;
min-height: 90vh;
padding: 20px;
border-radius: 10px;
}
.column h1{
text-align: center;
font-size: 22px;
}
.item{
background: #fff;
margin: 20px;
padding: 20px;
border-radius: 3px;
cursor: pointer;
}
.invisible{
display: none;
}
JavaScript
const items = document.querySelectorAll('.item')
const columns = document.querySelectorAll('.column')
let dragItem = null;
items.forEach(item => {
item.addEventListener('dragstart', dragStart)
item.addEventListener('dragend', dragEnd)
});
columns.forEach(column => {
column.addEventListener('dragover', dragOver);
column.addEventListener('drop', dragDrop);
});
function dragStart() {
dragItem = this;
setTimeout(() => this.className = 'invisible', 0)
}
function dragEnd() {
this.className = 'item'
dragItem = null;
}
function dragDrop() {
this.append(dragItem);
}
function dragOver(e) {
e.preventDefault()
}