<dialog>
وسم النافذة الحوارية <dialog>
وسم dialog نافذة منبثقة مدمجة بالمتصفح — showModal() تفتحها بخلفية معتمة وإدارة تركيز وإغلاق بـ Esc، مجانًا.
المودال الذي كان يتطلب مكتبة كاملة صار وسمًا: مخفي افتراضيًّا، وdialog.showModal() تفتحه فوق طبقة معتمة (تنسّقها عبر ::backdrop)، مع حبس التركيز داخله وإغلاق بمفتاح Esc وإرجاع التركيز عند الإغلاق — كل متطلبات الوصولية الشاقة مدمجة.
طريقتا فتح: showModal() للمودال الحاجب، وshow() لنافذة غير حاجبة. والإغلاق بـ close() أو زر داخل form بخاصية method="dialog".
الصياغة
<dialog id="box"> <p>المحتوى</p> <button onclick="box.close()">إغلاق</button> </dialog> <button onclick="box.showModal()">افتح</button>
⚡ جرّب بنفسك
عدّل الكود واضغط «تحديث» لترى النتيجة فورًا — التجربة أفضل معلّم.
🎨 محرّر HTML/CSS
<button onclick="document.getElementById('d1').showModal()" style="background:#7c5cff; color:white; border:0; padding:10px 20px; border-radius:8px; cursor:pointer">افتح النافذة</button>
<dialog id="d1" style="border:0; border-radius:14px; padding:24px; max-width:320px">
<h3 style="margin:0 0 8px">نافذة حوارية 👋</h3>
<p>جرّب الإغلاق بمفتاح Esc أيضًا.</p>
<button onclick="this.closest('dialog').close()" style="padding:8px 16px; border-radius:8px; border:1px solid #ccc; cursor:pointer">إغلاق</button>
</dialog>النتيجة المباشرة:
أهم الخصائص
| الخاصية | الوظيفة |
|---|---|
| open | ظاهر — لكن الفتح البرمجي showModal() هو الصحيح للمودالات |
| ::backdrop (منسق CSS) | الطبقة المعتمة خلف المودال — لونها وضبابيتها بيدك |
💡 نصائح عملية
- زر إغلاق بلا جافاسكريبت: form method="dialog" داخل النافذة
- عتّم الخلفية بأناقة: dialog::backdrop { background: rgb(0 0 0 / .5) }
⚠️ أخطاء شائعة
- فتحه بإضافة open يدويًّا — تخسر التعتيم وحبس التركيز وEsc
- بناء مودال من div + z-index في 2026 — الوسم يفعلها أفضل وأسهل
وسوم ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار HTML الكامل بالعربي.
📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs