العودة إلى المدونة

إنشاء عناصر السحب والإفلات باستخدام لغة JavaScript النقية (Vanilla)

إنشاء عناصر السحب والإفلات باستخدام لغة JavaScript النقية (Vanilla)

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

في هذا الدليل، سنقوم بـ إرشادك عبر خطوات إنشاء عناصر السحب والإفلات باستخدام لغة Vanilla JavaScript البسيطة. بالإضافة إلى ذلك، سنتقدم خطوة أخرى إلى الأمام ونبني تطبيق "مخطط الصباح" باستخدام HTML Drag and Drop API معالجات الأحداث.

المتطلبات الأساسية

لمتابعة هذا البرنامج التعليمي، يجب أن يكون لديك:

  • أساسيات JavaScript.
  • معرفة بـ HTML و CSS ستشكل ميزة إضافية كبيرة.

الخطوة 1: إنشاء مشروع جديد

ابدأ بإنشاء حاوية تحتوي على عنصرين فرعيين. سنستخدم العنصر الفرعي الأول للسحب والعنصر الفرعي الثاني لتخزين العناصر المسحوبة.

ملاحظة: في هذا البرنامج التعليمي، سنعامل الحاويات كمخزن للاحتفاظ بجميع العناصر المسحوبة. بعبارات بسيطة، سيتم إسقاط جميع العناصر المسحوبة من العنصر الفرعي الأول في العنصر الفرعي الثاني.

بعد ذلك، استخدم أمر cd لتغيير الدليل إلى مجلد drag-and-drop-demo  :

الخطوة 2: الإعداد الأولي

في هذا البرنامج التعليمي، سنقوم بإنشاء ملفات HTML و CSS و JavaScript وربطها. أولاً، قم بتسمية الملفات باسم index.html, styles.css، و scripts.js على التوالي.

بعد ذلك، أضف العنوان كـ “مخططي الصباحي” في ملف index.html :

بعد ذلك، قم بربط CSS، و إضافة JavaScript إلى HTML:

الآن، سنقوم بإنشاء حاوية أولية وإضافة العنصر الذي نريد سحبه وإسقاطه. تأكد من تعيين السمة draggable="true"، وأضف قائمة العناصر التي تريد سحبها أو إسقاطها.

بعد ذلك، أضف أسطر التعليمات البرمجية التالية في علامات <body> :

احفظ وأغلق ملف index.html. بعد ذلك، جرب فتح ملف index.html في متصفحك وسترى صفحة تفتح:

بعد ذلك، دعنا ننسق ملف index.html باستخدام CSS لجعله يبدو بمظهر لائق.

الخطوة 3: التنسيق باستخدام CSS

بعد ذلك، أضف التنسيقات على جميع العناصر التي قمنا بتضمينها في ملف index.html الخاص بنا:

جرب فتح ملف index.html في متصفحك وشاهد النتيجة:

Creating Drag and Drop Elements with Pure, Vanilla JavaScript 1

على الرغم من أننا انتهينا من الهيكلة وإضافة التنسيقات، إلا أن العناصر لا تزال ثابتة. هذا يعني أنه لا يمكننا نقل العناصر أو تمريرها حتى نضيف ميزات ديناميكية إليها. في الخطوة التالية، سنرحب بلغة JavaScript والسلوكيات الديناميكية.

الخطوة 4: تقديم JavaScript

في هذه الخطوة، سنقوم بتقديم لغة JavaScript ونجعل جميع عناصر السحب صالحة للعمل. في ملف JS، قم بتعيين العناصر التي سنحتاج إليها. دعنا نحدد draggable و containers لسحب وإفلات العناصر على التوالي.

أضف سطري البرمجة في ملف scripts.js :

بعد ذلك، قم بإعداد جميع مستمعي الأحداث. ابدأ بإضافة عنصر dragstart كأول مستمع حدث لـ add قائمة الفئات. وبالمثل، أضف عنصر dragend كمستمع الحدث الثاني لـ remove قائمة الفئات.

قم بإرفاق EventListeners التالية في ملف scripts.js الخاص بك:

بعد ذلك، أضف dragover EventListener للتمرير وتحريك عناصرنا. قم بتعيين عنصر draggable الحالي باستخدام querySelector ثم قم بإلحاق العنصر القابل للسحب بالحاوية الحالية:

بشكل افتراضي، يتم تعطيل الإفلات داخل العنصر. استخدم e.preventDefault لتمكينه:

بعد ذلك، قم بإنشاء عنصر لتحديد موضع الماوس. ابدأ بإنشاء دالة getDragAfterElement حيث ستأخذ معلمتين. الأولى ستكون container والمعلمة الثانية y ستتولى تحديد موضع y للماوس. الآن، استخدم الدالة querySelectorAll للحصول على العناصر القابلة للسحب الخاصة بنا. قم بتعريف draggableElements لجميع العناصر القابلة للسحب داخل الحاوية:

بعد ذلك، قم باستدعاء دالة reduce والتي ستدور عبر قائمة العناصر القابلة للسحب وتحدد أيضًا العنصر الفردي بعد مؤشر الماوس. بعد ذلك، return دالة reduce عن طريق إضافة العنصر الأول كـ closest والثاني كـ child. أيضًا، قم بمساواة offset وأضف الشروط.

أضف أسطر الكود التالية في scripts.js ملف:

في الجزء الأخير، سنقوم بوضع الشروط والتحقق من AfterElements. تحقق من AfterElements باستخدام if-else الشروط، وإذا تم تعيينها على null، قم بإلحاق عنصر تابع في نهاية القائمة باستخدام appendChild. وإلا، أضف العنصر draggable و afterElement كمعاملات في دالة insertBefore .

قم بتضمين هذا في scripts.js ملف:

الآن انتهينا من الإعداد اللازم. افتح متصفحك وقم بتشغيل index.html في متصفحك. سترى الصفحة “My Morning Scheduler” مع خيارات السحب والإفلات. يعمل الخط الأبيض في المنتصف كجسر للتمييز بين المهام التي تم إنجازها بالفعل وتلك التي لم يتم إنجازها بعد:

الخاتمة

يعد السحب والإفلات خيارًا ممتازًا للاستخدام في مواقع الويب الحديثة. في هذا الدليل، استخدمنا عددًا قليلاً من معالجات الأحداث لجعل البرنامج التعليمي سهلاً للمبتدئين. هناك ثمانية معالجات أحداث في المجمل ونشجعك على استخدامها مع تقدمك. بمجرد أن تشعر بالارتياح تجاه استخدام الدوال والكود المستخدم في هذا البرنامج التعليمي، يمكنك التعمق أكثر في موضوعات JavaScript مثل jQuery والبدء في الاستكشاف. يمكنك أيضًا تجربة بناء تطبيق مهام (To-Do)، ومتتبع التقدم الأسبوعي باستخدام ميزات التاريخ والوقت في JavaScript، وتطبيقات أخرى باستخدام المفاهيم التي تعلمتها للتو.

لمزيد من التعلم حول موضوعات JavaScript وتطوير الويب، تحقق من هذه الموارد من مدونتنا:

حوسبة سعيدة!

author

Shreyas Patil

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.