آموزش Drag and Drop در HTML و JavaScript 🎯
آموزش Drag and Drop ویژگی Drag and Drop (کشیدن و رها کردن) یکی از قابلیتهای جذاب در طراحی وب است که به کاربران اجازه میدهد عناصر را با ماوس بکشند و در جای دیگری رها کنند. این قابلیت در بسیاری از سایتها مانند مدیریت فایل، ویرایشگرهای آنلاین و اپلیکیشنهای تحت وب استفاده میشود.
در این مقاله، بهطور کامل نحوه پیادهسازی Drag and Drop را در HTML، CSS و JavaScript بررسی خواهیم کرد. 
Drag and Drop چیست؟ 
Drag and Drop روشی برای تعامل کاربران با عناصر صفحه است که در آن، یک عنصر را میگیرند (Drag) و در موقعیت دیگری رها میکنند (Drop).
نمونههای کاربردی:
• آپلود فایل با کشیدن و رها کردن
• مرتبسازی آیتمهای یک لیست
• ویرایش چیدمان داشبوردها
• بازیهای تحت وب
نحوه فعالسازی قابلیت Drag در HTML 
برای ایجاد یک عنصر قابل کشیدن، باید ویژگی draggable=”true” را به آن اضافه کنیم:
<img src="image.jpg" draggable="true">این ویژگی به مرورگر میگوید که این عنصر قابل کشیدن است، اما هنوز رفتار خاصی برای آن تعریف نشده است.
فهرست مطالب
ارائه خدمات مشاوره کسب و کار رایگان در جهت توسعه فروش، رشد کسب و کار و تغییر موقعیت برند شما پنج شنبه های هر هفته
نشانه های طراحی
رویدادهای Drag and Drop در جاوااسکریپت 
برای اجرای Drag and Drop، چند رویداد مهم وجود دارد:
dragstart: وقتی کشیدن عنصر آغاز میشود.
dragover: وقتی عنصر در ناحیه رهاشدنی قرار دارد.
drop: وقتی عنصر رها میشود.
dragend: وقتی کشیدن به پایان میرسد.
ایجاد اولین مثال Drag and Drop 
در این مثال، تصویری را میکشیم و در یک ناحیه دیگر رها میکنیم.
HTML:
<img id="dragItem" src="image.jpg" draggable="true">
<div id="dropZone">اینجا رها کنید</div>CSS:
#dropZone {
width: 200px;
height: 200px;
border: 2px dashed #000;
text-align: center;
line-height: 200px;
}JavaScript:
const dragItem = document.getElementById(" dragItem");
const dropZone = document.getElementById(" dropZone");
dragItem.addEventListener(" dragstart", function(event) {
event.dataTransfer.setData(" text", event.target.id);
});
dropZone.addEventListener(" dragover", function(event) {
event.preventDefault();
});
dropZone.addEventListener(" drop", function(event) {
event.preventDefault();
const draggedElementId = event.dataTransfer.getData(" text");
const draggedElement = document.getElementById( draggedElementId);
dropZone.appendChild( draggedElement);
});
در این مثال:
• تصویر هنگام کشیده شدن، شناسه خود را ذخیره میکند.
• ناحیه Drop اجازه میدهد عنصر درون آن قرار گیرد.
• وقتی عنصر رها شد، به داخل ناحیه Drop اضافه میشود.
کشیدن و رها کردن چندین آیتم 
در این مثال، چندین آیتم قابل کشیدن داریم.
HTML:
<div class="draggable" draggable="true">آیتم ۱</div>
<div class="draggable" draggable="true">آیتم ۲</div>
<div id="dropArea">اینجا رها کنید</div>CSS:
.draggable {
width: 100px;
padding: 10px;
background-color: lightblue;
margin: 5px;
cursor: grab;
}
#dropArea {
width: 200px;
height: 200px;
border: 2px dashed #333;
}JavaScript:
const draggableItems = document.querySelectorAll(". draggable");
const dropArea = document.getElementById(" dropArea");
draggableItems.forEach(item => {
item.addEventListener(" dragstart", function(event) {
event.dataTransfer.setData(" text", event.target.id);
});
});
dropArea.addEventListener(" dragover", function(event) {
event.preventDefault();
});
dropArea.addEventListener(" drop", function(event) {
event.preventDefault();
const itemId = event.dataTransfer.getData(" text");
const draggedItem = document.getElementById( itemId);
dropArea.appendChild( draggedItem);
});
این کد امکان کشیدن چندین آیتم را فراهم میکند.
آپلود فایل با Drag and Drop 
برای آپلود فایل با کشیدن و رها کردن:
HTML:
<div id="fileDrop">فایل خود را اینجا بکشید</div>
<input type="file" id="fileInput" hidden>JavaScript:
const fileDrop = document.getElementById(" fileDrop");
const fileInput = document.getElementById(" fileInput");
fileDrop.addEventListener(" dragover", function(event) {
event.preventDefault();
});
fileDrop.addEventListener(" drop", function(event) {
event.preventDefault();
const files = event.dataTransfer.files;
console.log(files);
});
این کد اجازه میدهد فایلها مستقیماً روی صفحه کشیده و انتخاب شوند.
مرتبسازی لیست با Drag and Drop 
برای ایجاد یک لیست که کاربران بتوانند آیتمهای آن را جابجا کنند، میتوان از jQuery UI استفاده کرد:
<ul id="sortable">
<li>آیتم ۱</li>
<li>آیتم ۲</li>
<li>آیتم ۳</li>
</ul>
<script>
$(function() {
$("#sortable").sortable();
});
</script>
این ویژگی امکان مرتبسازی آیتمها را فراهم میکند.
افزودن انیمیشن به Drag and Drop 
برای زیباتر کردن تجربه کاربری، میتوانیم هنگام کشیدن، افکت اضافه کنیم.
CSS:
.draggable:active {
transform: scale(1.1);
transition: 0.2s;
}غیرفعال کردن Drag and Drop برای برخی عناصر 
برای جلوگیری از کشیده شدن برخی آیتمها، از draggable=”false” استفاده کنید:
<p draggable="false">این متن قابل کشیدن نیست</p>بهترین روشها برای پیادهسازی Drag and Drop 
از event.preventDefault() برای جلوگیری از رفتار پیشفرض مرورگر استفاده کنید.
با استفاده از CSS، تغییرات بصری جذاب ایجاد کنید.
برای سازگاری بهتر، از jQuery UI در پروژههای بزرگتر استفاده کنید.
برای پشتیبانی موبایل، از touch events نیز بهره ببرید.
برای مرتبسازی لیستها، از sortable استفاده کنید.
نتیجهگیری 
ویژگی Drag and Drop در HTML و JavaScript یکی از ابزارهای پرکاربرد برای بهبود تجربه کاربری در وبسایتها است. با استفاده از این قابلیت، میتوان آپلود فایل، مرتبسازی لیستها و انتقال دادهها را آسانتر کرد.
ارائه خدمات اندیشه دیجی