تخطَّ إلى المحتوى

<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