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

خصص نسخة تجريبية منفصلة، واستخدم متصفحاً حديثاً وأدوات المطور، وسجل التغيير الذي تجريه. لا تعدل ملفات الإنتاج مباشرة. عند وجود شك، قلل المثال إلى عنصر واحد ثم أعد إضافة الأجزاء تدريجياً، فهذه أسرع طريقة لمعرفة مصدر السلوك غير المتوقع.
خطة التطبيق خطوة بخطوة
1. تحديد ما يستحق قائمة فرعية
ضع داخلها روابط مترابطة فعلاً، مثل أنواع الخدمات، ولا تستخدمها لإخفاء رابط واحد. في الهاتف قد يكون فتح القسم داخل القائمة أوضح من قائمة تحويم معقدة. عند التطبيق، عرّف معيار نجاح صغيراً: هل يفهم الزائر الإجراء؟ هل تعمل الحالة نفسها عند إعادة التحميل؟ هل يمكن لفريقك شرح هذا الجزء في دقيقة؟ الإجابة العملية أهم من زيادة التعقيد.
2. اختيار زر للتحكم
استخدم button لفتح الجزء المخفي، وضع aria-expanded وaria-controls. الرابط يجب أن ينقل المستخدم إلى صفحة، بينما الزر يجب أن يغير حالة الواجهة فقط. عند التطبيق، عرّف معيار نجاح صغيراً: هل يفهم الزائر الإجراء؟ هل تعمل الحالة نفسها عند إعادة التحميل؟ هل يمكن لفريقك شرح هذا الجزء في دقيقة؟ الإجابة العملية أهم من زيادة التعقيد.
3. كتابة دالة حالة مركزية
دالة openMenu تستقبل true أو false وتغير الصنف والسمة والجزء المخفي معاً. مركزية الحالة تمنع بقاء aria-expanded صحيحاً بينما القائمة مرئية أو العكس. عند التطبيق، عرّف معيار نجاح صغيراً: هل يفهم الزائر الإجراء؟ هل تعمل الحالة نفسها عند إعادة التحميل؟ هل يمكن لفريقك شرح هذا الجزء في دقيقة؟ الإجابة العملية أهم من زيادة التعقيد.
4. إغلاق القائمة بشكل متوقع
استمع إلى click على المستند وتحقق أن الهدف ليس داخل المكوّن، واستمع إلى Escape. لا تغلقها بمجرد خروج المؤشر في الأجهزة التي لا تملك مؤشراً أصلاً. عند التطبيق، عرّف معيار نجاح صغيراً: هل يفهم الزائر الإجراء؟ هل تعمل الحالة نفسها عند إعادة التحميل؟ هل يمكن لفريقك شرح هذا الجزء في دقيقة؟ الإجابة العملية أهم من زيادة التعقيد.
5. ترتيب التنقل بالمفاتيح
يصل زر Tab إلى زر الفتح ثم إلى روابط القائمة عند ظهورها. بعد Escape أعد التركيز إلى الزر، حتى يعرف المستخدم أين انتهى التفاعل. عند التطبيق، عرّف معيار نجاح صغيراً: هل يفهم الزائر الإجراء؟ هل تعمل الحالة نفسها عند إعادة التحميل؟ هل يمكن لفريقك شرح هذا الجزء في دقيقة؟ الإجابة العملية أهم من زيادة التعقيد.
6. اختبار السياقات الصغيرة
اختبر القائمة داخل رأس ضيق، وفي لغة RTL، وعندما تكون هناك قائمة ثانية. تجنب معرفات مكررة أو محددات عامة تجعل كل القوائم تفتح في آن واحد. عند التطبيق، عرّف معيار نجاح صغيراً: هل يفهم الزائر الإجراء؟ هل تعمل الحالة نفسها عند إعادة التحميل؟ هل يمكن لفريقك شرح هذا الجزء في دقيقة؟ الإجابة العملية أهم من زيادة التعقيد.
مثال مبسط قابل للتطوير
لا يمثل المثال منتجاً كاملاً، لكنه يعرض الفكرة بأقل عناصر ممكنة. غيّر الأسماء والقيم بما يناسب مشروعك، ثم أضف طبقة واحدة في كل مرة واختبرها قبل الانتقال إلى الطبقة التالية.
function setMenu(open) {
menu.hidden = !open;
trigger.setAttribute('aria-expanded', String(open));
}
trigger.addEventListener('click', () => setMenu(menu.hidden));
document.addEventListener('keydown', e => {
if (e.key === 'Escape') { setMenu(false); trigger.focus(); }
});
مفاهيم يجب تثبيتها بالممارسة

في سياق إنشاء قائمة منسدلة احترافية باستخدام JavaScript، يرتبط مفهوم aria-expanded بقرار عملي لا بمجرد مصطلح تقني. ابدأ بنسخة صغيرة قابلة للمشاهدة، ثم غيّر متغيراً واحداً ولاحظ النتيجة في المتصفح. هذه الطريقة تجعل التعلم أو التنفيذ قابلاً للقياس: تعرف ما الذي نجح، ولماذا تغير السلوك، وأين يجب أن تضع التحسين التالي. احتفظ بملاحظة قصيرة تشرح الافتراض الذي اختبرته، خصوصاً إن كان المشروع يتضمن أكثر من صفحة أو أكثر من شخص في الفريق. لا تضحِّ بالوضوح من أجل اختصار الكود؛ الاسم الجيد والتقسيم البسيط يوفران وقتاً عند المراجعة والتطوير. وفي كل مرحلة اختبر النتيجة على شاشة صغيرة ولوحة مفاتيح واتصال عادي، لأن التجربة الحقيقية للزائر أهم من نجاح المثال في جهاز المطور.
في سياق إنشاء قائمة منسدلة احترافية باستخدام JavaScript، يرتبط مفهوم contains بقرار عملي لا بمجرد مصطلح تقني. ابدأ بنسخة صغيرة قابلة للمشاهدة، ثم غيّر متغيراً واحداً ولاحظ النتيجة في المتصفح. هذه الطريقة تجعل التعلم أو التنفيذ قابلاً للقياس: تعرف ما الذي نجح، ولماذا تغير السلوك، وأين يجب أن تضع التحسين التالي. احتفظ بملاحظة قصيرة تشرح الافتراض الذي اختبرته، خصوصاً إن كان المشروع يتضمن أكثر من صفحة أو أكثر من شخص في الفريق. لا تضحِّ بالوضوح من أجل اختصار الكود؛ الاسم الجيد والتقسيم البسيط يوفران وقتاً عند المراجعة والتطوير. وفي كل مرحلة اختبر النتيجة على شاشة صغيرة ولوحة مفاتيح واتصال عادي، لأن التجربة الحقيقية للزائر أهم من نجاح المثال في جهاز المطور.
في سياق إنشاء قائمة منسدلة احترافية باستخدام JavaScript، يرتبط مفهوم Escape بقرار عملي لا بمجرد مصطلح تقني. ابدأ بنسخة صغيرة قابلة للمشاهدة، ثم غيّر متغيراً واحداً ولاحظ النتيجة في المتصفح. هذه الطريقة تجعل التعلم أو التنفيذ قابلاً للقياس: تعرف ما الذي نجح، ولماذا تغير السلوك، وأين يجب أن تضع التحسين التالي. احتفظ بملاحظة قصيرة تشرح الافتراض الذي اختبرته، خصوصاً إن كان المشروع يتضمن أكثر من صفحة أو أكثر من شخص في الفريق. لا تضحِّ بالوضوح من أجل اختصار الكود؛ الاسم الجيد والتقسيم البسيط يوفران وقتاً عند المراجعة والتطوير. وفي كل مرحلة اختبر النتيجة على شاشة صغيرة ولوحة مفاتيح واتصال عادي، لأن التجربة الحقيقية للزائر أهم من نجاح المثال في جهاز المطور.
في سياق إنشاء قائمة منسدلة احترافية باستخدام JavaScript، يرتبط مفهوم focus بقرار عملي لا بمجرد مصطلح تقني. ابدأ بنسخة صغيرة قابلة للمشاهدة، ثم غيّر متغيراً واحداً ولاحظ النتيجة في المتصفح. هذه الطريقة تجعل التعلم أو التنفيذ قابلاً للقياس: تعرف ما الذي نجح، ولماذا تغير السلوك، وأين يجب أن تضع التحسين التالي. احتفظ بملاحظة قصيرة تشرح الافتراض الذي اختبرته، خصوصاً إن كان المشروع يتضمن أكثر من صفحة أو أكثر من شخص في الفريق. لا تضحِّ بالوضوح من أجل اختصار الكود؛ الاسم الجيد والتقسيم البسيط يوفران وقتاً عند المراجعة والتطوير. وفي كل مرحلة اختبر النتيجة على شاشة صغيرة ولوحة مفاتيح واتصال عادي، لأن التجربة الحقيقية للزائر أهم من نجاح المثال في جهاز المطور.
في سياق إنشاء قائمة منسدلة احترافية باستخدام JavaScript، يرتبط مفهوم المكوّن بقرار عملي لا بمجرد مصطلح تقني. ابدأ بنسخة صغيرة قابلة للمشاهدة، ثم غيّر متغيراً واحداً ولاحظ النتيجة في المتصفح. هذه الطريقة تجعل التعلم أو التنفيذ قابلاً للقياس: تعرف ما الذي نجح، ولماذا تغير السلوك، وأين يجب أن تضع التحسين التالي. احتفظ بملاحظة قصيرة تشرح الافتراض الذي اختبرته، خصوصاً إن كان المشروع يتضمن أكثر من صفحة أو أكثر من شخص في الفريق. لا تضحِّ بالوضوح من أجل اختصار الكود؛ الاسم الجيد والتقسيم البسيط يوفران وقتاً عند المراجعة والتطوير. وفي كل مرحلة اختبر النتيجة على شاشة صغيرة ولوحة مفاتيح واتصال عادي، لأن التجربة الحقيقية للزائر أهم من نجاح المثال في جهاز المطور.
في سياق إنشاء قائمة منسدلة احترافية باستخدام JavaScript، يرتبط مفهوم RTL بقرار عملي لا بمجرد مصطلح تقني. ابدأ بنسخة صغيرة قابلة للمشاهدة، ثم غيّر متغيراً واحداً ولاحظ النتيجة في المتصفح. هذه الطريقة تجعل التعلم أو التنفيذ قابلاً للقياس: تعرف ما الذي نجح، ولماذا تغير السلوك، وأين يجب أن تضع التحسين التالي. احتفظ بملاحظة قصيرة تشرح الافتراض الذي اختبرته، خصوصاً إن كان المشروع يتضمن أكثر من صفحة أو أكثر من شخص في الفريق. لا تضحِّ بالوضوح من أجل اختصار الكود؛ الاسم الجيد والتقسيم البسيط يوفران وقتاً عند المراجعة والتطوير. وفي كل مرحلة اختبر النتيجة على شاشة صغيرة ولوحة مفاتيح واتصال عادي، لأن التجربة الحقيقية للزائر أهم من نجاح المثال في جهاز المطور.
أخطاء شائعة وكيف تتجنبها
- استخدام div كزر: راجع السبب قبل الحل، واختبر التعديل في حالة صغيرة ثم وثّق السلوك المتوقع كي لا يعود الخطأ في تحديث لاحق.
- فتح القائمة بالتحويم فقط: راجع السبب قبل الحل، واختبر التعديل في حالة صغيرة ثم وثّق السلوك المتوقع كي لا يعود الخطأ في تحديث لاحق.
- نسيان إغلاق النقر الخارجي: راجع السبب قبل الحل، واختبر التعديل في حالة صغيرة ثم وثّق السلوك المتوقع كي لا يعود الخطأ في تحديث لاحق.
- عدم إعادة التركيز: راجع السبب قبل الحل، واختبر التعديل في حالة صغيرة ثم وثّق السلوك المتوقع كي لا يعود الخطأ في تحديث لاحق.
- ربط كل القوائم بمعرف واحد: راجع السبب قبل الحل، واختبر التعديل في حالة صغيرة ثم وثّق السلوك المتوقع كي لا يعود الخطأ في تحديث لاحق.
كيف يحول هذا العمل إلى نتيجة تجارية؟
يجب أن يخدم التنفيذ محتوى الموقع ورسالة النشاط، لا أن يكون استعراضاً تقنياً. اربط ما بنيته بصفحات تصميم المواقع الإلكترونية، وراجع أن زر الإجراء ونصه ومسار التواصل واضحان. عندما تحتاج مشروعاً متكاملاً يجمع التصميم والسرعة والتحسين، تضع مؤسسة مارسيليا للبرمجيات احتياجات النشاط وتجربة العميل في نقطة البداية.
قائمة مراجعة قبل النشر
- اختبر النتيجة على الهاتف وسطح المكتب.
- تحقق من النصوص البديلة والعناوين والتركيز.
- راقب Console ولا تترك أخطاء صامتة.
- قلل الملفات والصور غير الضرورية.
- اطلب من مستخدم تجربة المسار الأساسي دون شرح منك.
الخلاصة والخطوة التالية
إنشاء قائمة منسدلة احترافية باستخدام JavaScript يصبح أسهل عندما تقسمه إلى قرارات صغيرة قابلة للاختبار. ابدأ اليوم بالنسخة البسيطة، ثم حسّنها بناء على الملاحظة والقياس. تواصل مع مؤسسة مارسيليا للبرمجيات للحصول على موقع يعكس خدماتك ويمنح زوارك تجربة واضحة وسريعة، من التخطيط وحتى الإطلاق والدعم.
الأسئلة الشائعة
يمكن البدء بخطوات صغيرة، لكن الممارسة المنتظمة وفهم HTML وCSS يسرعان التقدم في الموضوعات المرتبطة بالواجهة.
النسخة الأساسية قد تأخذ ساعة أو ساعتين، بينما الاختبار على الهاتف والإتاحة وتحسين التفاصيل يحتاج وقتاً إضافياً لا ينبغي تجاوزه.
لا. اختبر على متصفحات وشاشات مختلفة، وركز على المسار الأساسي الذي يؤديه الزائر مثل الإرسال أو التنقل أو الطلب.
قد يؤثر إذا كان كبيراً أو ينفذ عملاً ثقيلاً. حمّل الضروري فقط، واستخدم defer أو التقسيم، وقس الأداء على أجهزة حقيقية.
اطلبها عند الحاجة إلى تصميم متكامل أو ربطات خارجية أو متطلبات أداء وإتاحة. يستطيع فريق مؤسسة مارسيليا تحويل المتطلبات إلى خطة تنفيذ قابلة للقياس.
راقب سلوك المستخدم، واجمع الملاحظات، ثم حسّن مشكلة واحدة واضحة بدلاً من إضافة مزايا كثيرة لا يمكن قياس أثرها.
اضغط للتواصل الفوري مع مدير المشاريع عبر الواتساب
نرسل لك ملخص الميزانية وخطة التنفيذ الأولية بمجرد وصول رسالتك. لا حاجة لنموذج مطوّل، فقط اكتب لنا "ابدأ".
- 4.9/5 متوسط تقييم العملاء
- +320 مشروع تم إطلاقه
- 15 دقيقة متوسط الرد الأولي
متاح يومياً من 10 ص حتى 10 م. اذكر نوع مشروعك أو أرسل تحية فقط، وسيعاودك مدير المشاريع فوراً.
ارسال رسالة واتساب الآنيتم حفظ بياناتك بسرية ويصلك رد شخصي من فريق مارسليا.
