0Pricing
JavaScript Academy · درس

التغذية المرئية الراجعة أثناء السحب

نسّقوا العناصر أثناء عمليات السحب.

التغذية المرئية الراجعة أثناء السحب درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

أهمية التغذية الراجعة المرئية

توضح عملية السحب والإفلات الجيدة للمستخدم ما يحدث: أي عنصر يتحرك، وأين يمكن إفلاته، وما إذا كان الإفلات صالحًا. ومن دون هذه التغذية الراجعة، يبدو التفاعل معطّلًا.

تنسيق العنصر المسحوب

خفّف عتامة المصدر أو كبّره في dragstart لكي يرى المستخدم العنصر الذي اختاره.

item.addEventListener("dragstart", () => item.classList.add("is-dragging"));
item.addEventListener("dragend", () => item.classList.remove("is-dragging"));

حدث dragenter

يُطلَق dragenter عندما يدخل العنصر المسحوب إلى هدف محتمل. استخدمه لإبراز المنطقة.

zone.addEventListener("dragenter", (e) => {
  e.preventDefault();
  zone.classList.add("drag-over");
});

حدث dragleave

يُطلَق dragleave عندما يغادر العنصر الهدف. أزل الإبراز هنا.

zone.addEventListener("dragleave", () => {
  zone.classList.remove("drag-over");
});

مشكلة الوميض

يُطلَق dragenter/dragleave أيضًا للعناصر الابنة، مما يسبب وميضًا. ويساعد عدّاد أو فحص relatedTarget في إبقاء الإبراز ثابتًا.

let depth = 0;
zone.addEventListener("dragenter", () => { depth++; zone.classList.add("drag-over"); });
zone.addEventListener("dragleave", () => { depth--; if (depth === 0) zone.classList.remove("drag-over"); });

إعادة الضبط عند الإفلات

امسح حالة الإبراز دائمًا في معالج drop، إذ قد لا يُطلَق dragleave عند نجاح الإفلات.

zone.addEventListener("drop", (e) => {
  e.preventDefault();
  depth = 0;
  zone.classList.remove("drag-over");
});

تخصيص صورة السحب

يستبدل setDragImage(element, offsetX, offsetY) في dragstart الصورة الشبحية الافتراضية بأي عنصر.

item.addEventListener("dragstart", (e) => {
  const ghost = document.getElementById("custom-ghost");
  e.dataTransfer.setDragImage(ghost, 20, 20);
});

المؤشر عبر dropEffect

يتحكم dropEffect في المؤشر، سواء كان علامة الجمع للنسخ أو سهم النقل أو مؤشر عدم السماح بالإفلات، ويُعيّن في dragover. ارفض عمليات الإفلات غير الصالحة باستخدام "none".

zone.addEventListener("dragover", (e) => {
  e.preventDefault();
  e.dataTransfer.dropEffect = canAccept ? "move" : "none";
});

إظهار عنصر نائب للإفلات

في القوائم القابلة للفرز، أدرج عنصرًا نائبًا في موضع الإفلات المتوقع لكي يرى المستخدم بدقة أين سيستقر العنصر.

function showPlaceholder(beforeEl) {
  list.insertBefore(placeholder, beforeEl);
}

حساب موضع الإدراج

قارن إحداثي Y للمؤشر مع نقطة المنتصف الرأسية لكل عنصر لتحديد ما إذا كان يجب الإفلات قبله أو بعده.

function getAfterElement(container, y) {
  const items = [...container.querySelectorAll(".item:not(.is-dragging)")];
  return items.find((el) => {
    const box = el.getBoundingClientRect();
    return y < box.top + box.height / 2;
  });
}

التغذية الراجعة الميسّرة

تستبعد الإشارات المرئية وحدها مستخدمي لوحة المفاتيح وقارئات الشاشة. اقرن السحب والإفلات بإعلانات ARIA المباشرة وبديل يعتمد على لوحة المفاتيح لتحقيق إمكانية الوصول.

تحقق سريع

اختبر التغذية الراجعة المرئية.

مراجعة: التغذية الراجعة المرئية

نسّقت العنصر المسحوب، وأبرزت المناطق باستخدام dragenter/dragleave، وحللت مشكلة الوميض باستخدام عدّاد للعمق، وخصّصت صورة السحب، وتحكمت في المؤشر عبر dropEffect، وأظهرت عناصر نائبة للإفلات. التالي: سحب الملفات إلى الصفحة.

الأسئلة الشائعة

هل درس «التغذية المرئية الراجعة أثناء السحب» مجاني؟

نعم — نص درس «التغذية المرئية الراجعة أثناء السحب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «التغذية المرئية الراجعة أثناء السحب»؟

نسّقوا العناصر أثناء عمليات السحب. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟

لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التغذية المرئية الراجعة أثناء السحب»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟

نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. جعل العناصر قابلة للسحب
  2. أهداف الإسقاط وdataTransfer
  3. التغذية المرئية الراجعة أثناء السحب
  4. سحب الملفات إلى الصفحة
← العودة إلى JavaScript Academy