تنسيق النوافذ المنبثقة ومربعات الحوار
نسّق عناصر dialog الأصلية في HTML والنوافذ المنبثقة المخصصة مع الخلفية والموضع والحركات.
تنسيق النوافذ المنبثقة ومربعات الحوار درس مجاني في CSS Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في CSS Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة CSS Academy 4 دروس في المجموع.
عنصر dialog الأصلي
يوفر عنصر HTML <dialog> سلوكًا مدمجًا للنوافذ الحوارية المنبثقة: حصر التركيز، والإغلاق عند الضغط على Escape، وواجهة showModal() / close(). نسّقه باستخدام CSS بدلًا من بناء هيكل مخصص للنوافذ المنبثقة من الصفر.
تنسيق الخلفية المعتمة
ينسّق العنصر الزائف ::backdrop الطبقة التراكبية خلف عنصر <dialog> المفتوح. طبّق خلفية شبه شفافة: dialog::backdrop { background: rgba(0,0,0,0.5); backdrop-filter: blur(4px); }. لا حاجة إلى div تغليف.
تخطيط النافذة الحوارية
وسّط النوافذ الحوارية باستخدام CSS: dialog { margin: auto; max-width: min(90vw, 640px); max-height: 90vh; overflow-y: auto; }. يؤدي استخدام margin: auto في عنصر dialog إلى وضعه في وسط إطار العرض من دون تحديد موضعه باستخدام JavaScript.
التمرير والتجاوز
اضبط overflow-y: auto في النافذة الحوارية نفسها لمعالجة المحتوى الطويل. واضبط overflow: hidden في body عند فتح النافذة المنبثقة لمنع تمرير الخلفية، وذلك بإضافة فئة وإزالتها باستخدام JavaScript لتبديل هذا السلوك.
التحريك باستخدام CSS
حرّك دخول النافذة الحوارية باستخدام @starting-style (Chrome 117+) لإنشاء حركات دخول تعتمد على CSS فقط من دون JavaScript. ولتوفير دعم أوسع، أضف فئة open باستخدام JavaScript واستخدم transition على transform وopacity: يبدأ slide-up من translateY(20px) إلى translateY(0).
تحدي حركة الإغلاق
تحريك إغلاق النافذة الحوارية معقد، إذ تُخفى النافذة فورًا عند استدعاء close(). تتمثل الحلول في استخدام Popover API، الذي يدعم حركات الإغلاق أصلًا، أو اعتراض الإغلاق باستخدام JavaScript، وتشغيل فئة حركة الخروج، ثم استدعاء close() بعد انتهاء الحركة.
إدارة z-index
تُفتح النوافذ الحوارية فوق كل محتوى الصفحة الآخر. تجنب صراعات z-index باستخدام سياق التكديس الأصلي لعنصر dialog، إذ يُعرض في الطبقة العليا فوق جميع قيم CSS الخاصة بـ z-index من دون الحاجة إلى ضبط z-index على عنصر dialog نفسه.
النافذة الحوارية المتجاوبة
على الأجهزة المحمولة، حرّك النوافذ الحوارية من الأسفل كلوحة سفلية: dialog { margin: auto auto 0; width: 100%; border-radius: 16px 16px 0 0; max-height: 90vh; }. وعلى أجهزة سطح المكتب، وسّطها كنافذة منبثقة تقليدية باستخدام نمط margin: auto.
إدارة التركيز
ينقل عنصر dialog الأصلي التركيز تلقائيًا إلى أول عنصر قابل للتركيز بداخله عند فتحه. تأكد من وجود ترتيب منطقي للتنقل باستخدام مفتاح Tab داخل النافذة الحوارية. أضف زر إغلاق يعيد التركيز إلى العنصر الذي فعّل النافذة عند إغلاقها، لضمان تدفق تنقل سليم باستخدام لوحة المفاتيح.
سمات سهولة الوصول
أضف aria-labelledby للإشارة إلى عنوان النافذة الحوارية، وأضف aria-describedby للإشارة إلى وصفها. يكون دور النافذة الحوارية ضمنيًا في <dialog>. يعلن قارئو الشاشة هذه التسميات عند انتقال التركيز إلى النافذة الحوارية.
نمط نافذة التأكيد
تحتاج نوافذ التأكيد الحوارية إلى عنوان يتضمن سؤالًا واضحًا، ووصف موجز للتأثير، وزر إجراء هدّام باللون الأحمر ومحاذى إلى اليمين، وزر إلغاء محاذى إلى اليسار أو زرًا ثانويًا. استخدم autofocus على زر الإلغاء لجعل الخيار الآمن هو التفاعل الافتراضي باستخدام لوحة المفاتيح.
اختبار المعرفة
ما ميزة استخدام عنصر <dialog> الأصلي مقارنة بنافذة منبثقة مخصصة مبنية على div؟
الملخص
يوفر عنصر dialog الأصلي، مع ::backdrop، والتوسيط باستخدام margin: auto، والتحكم في التجاوز، وحركات CSS للدخول، وإدارة التركيز، نمطًا متكاملًا للنوافذ المنبثقة يعتمد على CSS ويسهل الوصول إليه. ويكتمل مكوّن النافذة الحوارية الجاهز للإنتاج بتخطيطات اللوحة المتجاوبة على الأجهزة المحمولة وسمات ARIA المناسبة.
الأسئلة الشائعة
هل درس «تنسيق النوافذ المنبثقة ومربعات الحوار» مجاني؟
نعم — نص درس «تنسيق النوافذ المنبثقة ومربعات الحوار» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة CSS Academy، انتقل إلى CoddyKit PRO. تتضمن دورة CSS Academy 4 دروس في المجموع.
ماذا ستتعلم في «تنسيق النوافذ المنبثقة ومربعات الحوار»؟
نسّق عناصر dialog الأصلية في HTML والنوافذ المنبثقة المخصصة مع الخلفية والموضع والحركات. تتمرن على CSS Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ CSS Academy؟
لا تُشترط خبرة سابقة. CSS Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تنسيق النوافذ المنبثقة ومربعات الحوار»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس CSS Academy هذا؟
نعم. كل درس في CSS Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مكوّن بطاقة باستخدام خصائص CSS المخصصة
- تنسيق النوافذ المنبثقة ومربعات الحوار
- أنماط القوائم المنسدلة وPopovers
- مكوّن علامات التبويب باستخدام حيلة :checked مقابل JS