09188337286-09182994006

آموزش 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
آموزش Drag and Drop
خدمات سئو سایت حرفه‌ ای

ارائه خدمات مشاوره کسب و کار رایگان در جهت توسعه فروش، رشد کسب و کار و تغییر موقعیت برند شما پنج شنبه های هر هفته

نشانه های طراحی

رویدادهای 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 یکی از ابزارهای پرکاربرد برای بهبود تجربه کاربری در وب‌سایت‌ها است. با استفاده از این قابلیت، می‌توان آپلود فایل، مرتب‌سازی لیست‌ها و انتقال داده‌ها را آسان‌تر کرد.

ارائه خدمات اندیشه دیجی

اطلاعاتت رو بده وقت مشاوره رزرو کن

منوی دسته بندی خود را در مسیر: "سربرگ ساز > چیدما موبایل > عنصر منوی موبایل > نمایش و مخفی کردن > انتخاب منو " تنظیم کنید
سبد خرید
برای دیدن نوشته هایی که دنبال آن هستید تایپ کنید.
فروشگاه
علاقه مندی
0 محصول سبد خرید
حساب کاربری من
× تماس با ما