فهرست سرفصل‌های HTML
خانه (HOME) مقدمه (Introduction) ویرایشگرها (Editors) پایه ها (Basic) المان ها (Elements) ویژگی ها (Attributes) سرفصل ها (Headings) پاراگراف ها (Paragraphs) استایل ها (Styles) قالب بندی متن (Formatting) نقل قول ها (Quotations) توضیحات (Comments) رنگ ها (Colors) مدل RGB (RGB) مدل HEX (HEX) مدل HSL (HSL) استفاده از CSS (CSS) لینک ها (Links) رنگ لینک ها (Link Colors) نشانه های لینک (Link Bookmarks) تصاویر (Images) نقشه تصویر (Image Map) تصویر پس زمینه (Background Images) المان Picture (The Picture Element) فاوآیکون (Favicon) عنوان صفحه (Page Title) جداول (Tables) مرزهای جدول (Table Borders) اندازه های جدول (Table Sizes) سربرگ های جدول (Table Headers) فاصله داخلی و بیرونی جدول (Padding & Spacing) ادغام سلول ها (Colspan & Rowspan) استایل دهی جدول (Table Styling) گروه ستون ها (Table Colgroup) فهرست ها (Lists) فهرست نامرتب (Unordered Lists) فهرست مرتب (Ordered Lists) سایر فهرست ها (Other Lists) بلوک ها و درون خطی ها (Block & Inline) المان div (Div) کلاس ها (Classes) شناسه ها (Id) فریم ها (Iframes) جاوااسکریپت (JavaScript) مسیر فایل ها (File Paths) بخش head (Head) چیدمان (Layout) طراحی واکنش گرا (Responsive) کدهای رایانه ای (Computercode) المان های معنایی (Semantics) راهنمای نگارش (Style Guide) نهادها (Entities) نمادها (Symbols) ایموجی ها (Emojis) کدگذاری نویسه ها (Charsets) رمزگذاری URL (URL Encode) مقایسه با XHTML (vs. XHTML) فرم ها (Forms) ویژگی های فرم (Form Attributes) المان های فرم (Form Elements) انواع ورودی (Input Types) ویژگی های ورودی (Input Attributes) بوم نقاشی (Canvas) بردارهای گرافیکی (SVG) رسانه ها (Media) ویدیو (Video) صدا (Audio) افزونه ها (Plug-ins) یوتیوب (YouTube) رابط های وب (Web APIs) مکان یابی جغرافیایی (Geolocation) کشیدن و رها کردن (Drag and Drop) ذخیره سازی وب (Web Storage) کارگران وب (Web Workers) رویدادهای ارسالی از سرور (Server-Sent Events-SSE) توضیح (<!-->) اعلان نوع سند (<!DOCTYPE>) پیوند (a) اختصار (abbr) سرنام (acronym) آدرس (address) اپلت (applet) ناحیه نقشه (area) مقاله (article) کنار نویس (aside) صوت (audio) پررنگ (b) پایه (base) فونت پایه (basefont) جداساز دوطرفه (bdi) جهت متن (bdo) بزرگ (big) بلوک نقل (blockquote) بدنه (body) خط جدید (br) دکمه (button) بوم (canvas) عنوان جدول (caption) مرکز (center) ارجاع (cite) کد (code) ستون (col) گروه ستون (colgroup) داده (data) فهرست داده (datalist) تعریف شرح (dd) حذف (del) جزئیات (details) اصطلاح (dfn) دایرکتوری (dir) بخش (div) فهرست تعاریف (dl) عنوان تعریف (dt) تأکید (em) جاسازی (embed) مجموعه فیلدها (fieldset) عنوان شکل (figcaption) شکل (figure) فونت (font) پاورقی (footer) فرم (form) فریم (frame) مجموعه فریم ها (frameset) سرفصل ها (h1–h6) سر (head) سربرگ (header) گروه عنوان (hgroup) خط افقی (hr) سند HTML (html) مورب (i) چارچوب درون صفحه ای (iframe) تصویر (img) ورودی (input) درج (ins) صفحه کلید (kbd) برچسب (label) افسانه (legend) مورد فهرست (li) پیوند منبع (link) بخش اصلی (main) نقشه تصویر (map) نشانه گذاری (mark) منو (menu) فراداده (meta) سنجش (meter) ناوبری (nav) بدون فریم (noframes) بدون اسکریپت (noscript) شیء (object) فهرست مرتب (ol) گروه گزینه ها (optgroup) گزینه (option) خروجی (output) پاراگراف (p) پارامتر (param) تصویر پاسخ گو (picture) پیش قالب (pre) پیشرفت (progress) نقل قول کوتاه (q) پرانتز روبی (rp) متن روبی (rt) روبی (ruby) خط زده (s) نمونه خروجی (samp) اسکریپت (script) جستجو (search) بخش (section) انتخاب (select) کوچک (small) منبع (source) دامنه (span) خط بطلان (strike) پررنگ معنایی (strong) سبک (style) زیرنویس (sub) خلاصه (summary) بالانویس (sup) بردار گرافیکی (svg) جدول (table) بدنه جدول (tbody) سلول جدول (td) الگو (template) ناحیه متن (textarea) پاورقی جدول (tfoot) سر ستون جدول (th) سربرگ جدول (thead) زمان (time) عنوان (title) سطر جدول (tr) زیرنویس رسانه (track) تله تایپ (tt) زیرخط دار (u) فهرست نامرتب (ul) متغیر (var) ویدیو (video) شکست خط (wbr)
HTML

HTML — کشیدن و رها کردن (Drag and Drop)

آخرین بروزرسانی: 1404/08/07

کشیدن و رها کردن (Drag and Drop)

«کشیدن و رها کردن (Drag and Drop)» یعنی با ماوس بگیری و جابه جا کنی. «API» یعنی رابط برنامه نویسی با توابع آماده. با این API، یک عنصر را می کشیم و در ناحیه مقصد رها می کنیم. سپس مرورگر کار را انجام می دهد.

نمونه سریع کشیدن و رها کردن

در این نمونه، یک تصویر را به داخل یک جعبه می اندازیم. داده انتقال، شناسه عنصر است.

<div id="div1" ondrop="dropHandler(event)" ondragover="dragoverHandler(event)"></div>
<img id="img1" src="img_logo.gif" draggable="true" ondragstart="dragstartHandler(event)" width="336" height="69">
<script>
function dragstartHandler(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}
function dragoverHandler(ev) {
  ev.preventDefault();
}
function dropHandler(ev) {
  ev.preventDefault();
  const data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
<\/script>

مشاهده در ادیتور

نکته: پیش فرض، رهاسازی ممنوع است. همیشه در ondragover از preventDefault() استفاده کن.

قابل کشیدن کردن عنصر (draggable)

برای کشیدنی شدن عنصر، ویژگی draggable را true بگذار.

<img id="img1" draggable="true">

مشاهده در ادیتور

شروع کشیدن: ondragstart و setData()

در شروع کشیدن، نوع داده و مقدار را تعیین کن. اینجا نوع «text» و مقدار «id» است.

<script>
function dragstartHandler(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}
<\/script>

مشاهده در ادیتور

اجازه رهاسازی: ondragover

برای اجازه رهاسازی، رفتار پیش فرض را متوقف کن. وگرنه رهاسازی انجام نمی شود.

<script>
function dragoverHandler(ev) {
  ev.preventDefault();
}
<\/script>

مشاهده در ادیتور

انجام رهاسازی: ondrop

در رویداد drop، داده را بگیر و عنصر را به مقصد اضافه کن.

<script>
function dropHandler(ev) {
  ev.preventDefault();
  const data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
<\/script>

مشاهده در ادیتور

نمونه بیشتر: کشیدن عنوان به جعبه

در این مثال، یک عنوان را داخل جعبه می اندازیم. رویدادها مشابه هستند.

<div id="div1" ondrop="dropHandler(event)" ondragover="dragoverHandler(event)"></div>
<h1 id="h1" draggable="true" ondragstart="dragstartHandler(event)">W3Schools.com</h1>
<script>
function dragstartHandler(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}
function dragoverHandler(ev) {
  ev.preventDefault();
}
function dropHandler(ev) {
  ev.preventDefault();
  const data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
<\/script>

مشاهده در ادیتور

پیوندهای مرتبط

برای ذخیره داده ساده، صفحه Web Storage را ببین. برای آشنایی با اجازه کاربر، Geolocation را مرور کن. و اگر لازم بود، راهنمای کشیدن و رها کردن را دوباره بخوان.

جمع بندی سریع

  • draggable را true بگذار.
  • در ondragstart، داده را setData کن.
  • در ondragover، preventDefault را فراموش نکن.
  • در ondrop، getData بگیر و append کن.
  • پیام های واضح به کاربر نشان بده.