انتقل إلى محتوى الدرس
الدرس 47
دورة بوتستراب 5

الإشعارات العائمة Toasts في بوتستراب 5Bootstrap 5 Toasts

أنشئ إشعارات عائمة غير حاجبة Toasts في Bootstrap 5.3 عبر واجهة جافاسكريبت البرمجية وحاويات التموضع والتكديس والألوان المدمجة ومهلة الاختفاء التلقائي وسمات ARIA القياسية.
أقسام الدرس
5
الأمثلة
3
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
1
محتوى الدرس
في هذا الدرس 5تصفّح المواضيع

تحاكي الإشعارات العائمة Toasts في Bootstrap 5.3 تنبيهات أنظمة التشغيل الحديثة وتطبيقات الهواتف؛ فهي رسائل خفيفة غير حاجبة Non-blocking تظهر في زاوية الشاشة لتأكيد حفظ مسودة أو وصول رسالة جديدة دون مقاطعة عمل المستخدم أو إعتام الصفحة كما تفعل النوافذ الحوارية Modals.

يتألف الإشعار القياسي من غلاف .toast يضم بالداخل شريط رأس اختياري .toast-header (يحوي عنوان المصدر بصيغة .me-auto، والطابع الزمني، وزر الإغلاق data-bs-dismiss="toast") متبوعاً بجسم الرسالة .toast-body.

مخطط التشريح المعماري للإشعار العائم toast ورأسه ومتنه وتفعيله عبر bootstrap.Toast

تُعدّ الإشعارات العائمة ميزة اختيارية التهيئة Opt-in تُشغَّل عقب نجاح استجابة الخادم (مثل طلب fetch لحفظ الإعدادات)؛ فلا نربطها بسمة فتح HTML تلقائية، بل نستدعي الدالة الآمنة bootstrap.Toast.getOrCreateInstance(toastEl) في جافاسكريبت القياسية ثم ننفّذ .show().

توفر الإضافة أيضاً أحداث دورة حياة دقيقة تشمل show.bs.toast وshown.bs.toast وhide.bs.toast وhidden.bs.toast، ما يمكّنك من تنظيف عناصر الإشعار المولّدة ديناميكياً من DOM فور اكتمال تلاشيها.

HTML
<button id="saveBtn" class="btn btn-primary" type="button">
  Save Profile</button>
<div id="saveToast" class="toast mt-3" role="status">
  <div class="toast-header">
    <strong class="me-auto">System</strong>
    <button type="button" class="btn-close"
      data-bs-dismiss="toast"></button>
  </div>
  <div class="toast-body">Changes saved!</div>
</div>

لتثبيت الإشعارات فوق محتوى الصفحة في زاوية محددة أو في أعلى المنتصف، نغلّفها داخل حاوية .toast-container مدمجة مع كلاسات التموضع المساعدة مثل .position-fixed.bottom-0.end-0.p-3 للزاوية السفلية، أو .top-0.start-50.translate-middle-x.p-3 لأعلى منتصف الشاشة.

عندما تضع عدة عناصر .toast داخل نفس .toast-container، يتكفّل Bootstrap 5 بتكديسها عمودياً فوق بعضها بمسافات فاصلة متناسقة تلقائياً دون الحاجة لحساب إحداثيات top يدوية لكل إشعار جديد!

مخطط تكديس الإشعارات داخل toast-container والأنماط المدمجة الملونة ومؤقت الاختفاء
HTML
<div class="toast-container position-static">
  <div class="toast show" role="status">
    <div class="toast-header">
      <strong class="me-auto">Build #1</strong>
      <button type="button" class="btn-close"
        data-bs-dismiss="toast"></button></div>
    <div class="toast-body">Assets compiled.</div>
  </div>
</div>

للرسائل السريعة الواضحة (مثل «تم نسخ الرابط بنجاح» أو «تعذّر الاتصال بالشبكة»)، يمكنك الاستغناء عن شريط .toast-header بالكامل وبناء إشعار مدمج ملون يجمع كلاس التلوين الذكي .text-bg-success أو .text-bg-danger مع .border-0.align-items-center.

بداخل هذا الإشعار المدمج نستخدم صفاً مرناً .d-flex يضع .toast-body بجانب زر إغلاق أبيض متباين .btn-close.btn-close-white.me-2.m-auto لضمان وضوح أيقونة الإغلاق فوق الخلفيات الداكنة والملونة.

HTML
<div class="toast show align-items-center
  text-bg-success border-0" role="status">
  <div class="d-flex">
    <div class="toast-body">Link copied to clipboard!</div>
    <button type="button" data-bs-dismiss="toast"
      class="btn-close btn-close-white me-2 m-auto">
    </button>
  </div>
</div>

تختفي الإشعارات تلقائياً افتراضياً (data-bs-autohide="true") بعد مرور 5000 ملي ثانية (data-bs-delay="5000"). وفي أنظمة التصميم المتقنة نجعل إشعارات النجاح العابرة تختفي تلقائياً بعد 4 إلى 5 ثوانٍ، بينما نضبط data-bs-autohide="false" على إشعارات الأخطاء حتى لا تضيع رسالة الخطأ قبل أن يقرأها المستخدم!

ومن منظور الإتاحة الرقمية ARIA، يجب أن توجد حاوية المناطق الحية في DOM مع ضبط aria-atomic="true"؛ استخدم role="status" aria-live="polite" للتأكيدات الهادئة لكي تنتظر قارئات الشاشة انتهاء الجملة الحالية، واستخدم role="alert" aria-live="assertive" للتنبيهات الحرجة العاجلة، مع عدم سحب تركيز لوحة المفاتيح قسراً نحو الإشعار.

جدول مرجعي لكلاسات وخيارات الإشعارات العائمة (Toasts Reference)

الكلاس / السمةالوظيفة المعماريةملاحظة الاستخدام والإتاحة
.toast-containerحاوية تموضع وتكديس الإشعاراتتُدمج مع position-fixed bottom-0 end-0 p-3
bootstrap.Toastواجهة التحكم البرمجية Vanilla JSتُستدعى عبر getOrCreateInstance(el).show()
data-bs-delayمهلة البقاء بالملي ثانيةالافتراضي 5000 ملي ثانية قبل الإخفاء
data-bs-autohide="false"إلغاء الإخفاء الزمني التلقائيضروري لرسائل الأخطاء أو الإشعارات ذات الروابط
aria-live="polite / assertive"تحديد أولوية نطق قارئ الشاشةلا تسحب تركيز لوحة المفاتيح بعيداً عن عمل المستخدم
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تعلّمت بنية الإشعارات العائمة Toasts في Bootstrap 5.3، وتشغيلها برمجياً عبر bootstrap.Toast، وتثبيتها وتكديسها داخل toast-container، وتصميم الإشعارات الملونة المدمجة، وضبط مهلة الاختفاء وسمات الإتاحة الصوتية. الخطوة التالية: انتقل الآن إلى الدرس الثامن والأربعين لبدء وحدة التنقل عبر إتقان مسار التصفح الدلالي Breadcrumbs وتخصيص فواصله ودعمه الكامل للعربية RTL.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Toast Notification الإشعار العائم (Toast)
رسالة تنبيه خفيفة غير حاجبة تظهر في زاوية النافذة لإبلاغ المستخدم بنتيجة عملية دون إيقاف تفاعله مع الصفحة.
للمراجعة
02 Toast Container حاوية تكديس الإشعارات
الكلاس الحاوي (.toast-container) المسؤول عن تثبيت موقع الإشعارات وترتيب تكدسها العمودي بمسافات منتظمة.
للمراجعة
03 Autohide Timer مؤقت الإخفاء التلقائي
آلية العد التنازلي المدمجة عبر data-bs-autohide وdata-bs-delay (5000 ملي ثانية افتراضياً) لإخفاء الإشعارات العابرة.
للمراجعة
04 ARIA Live Region المنطقة الحية لقارئ الشاشة
سمات إتاحة تسمح لقارئات الشاشة بنطق محتوى الإشعار الجديد فور ظهوره دون سحب تركيز لوحة المفاتيح من المستخدم.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 ARIA تطبيقات الإنترنت الغنية المتاحة
Accessible Rich Internet Applications
توفّر أدوار status وalert وسمتَي aria-live وaria-atomic لإعلان الإشعارات الفورية للمستخدمين المكفوفين.
للمراجعة
02 API واجهة برمجة التطبيقات
Application Programming Interface
دوال جافاسكريبت البرمجية في كائن bootstrap.Toast مثل getOrCreateInstance() وshow() وhide().
للمراجعة
03 DOM نموذج كائن المستند
Document Object Model
شجرة عناصر المستند التي تستضيف حاوية الإشعارات الحية وتستقبل رسائل الحالة الديناميكية.
للمراجعة
04 UX تجربة المستخدم
User Experience
جودة التفاعل التي تتحسن بجعل رسائل النجاح تختفي تلقائياً وإبقاء رسائل الخطأ ظاهرة حتى يغلقها المستخدم.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. ضع عنصر .toast داخل حاوية .toast-container مثبتة في أسفل النهاية، وأظهره عند نقر زر عبر bootstrap.Toast.getOrCreateInstance(el).show().

  2. صمّم إشعاراً بدون رأس بكلاسَي text-bg-danger وborder-0 مع زر btn-close-white وسمة data-bs-autohide="false" وسمات الإتاحة الحرجة.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما حالة الظهور الافتراضية لعنصر .toast في Bootstrap 5 قبل تشغيله بجافاسكريبت أو إضافة الكلاس .show؟

تبدأ عناصر .toast مخفية افتراضياً ولا تظهر إلا عند استدعاء دالة show() أو وضع كلاس .show.

02

أي كلاس حاوٍ يتكفل بتثبيت عدة إشعارات عائمة وتكديسها عمودياً بمسافات منتظمة؟

يدير الكلاس .toast-container تموضع الإشعارات والمسافات الفاصلة بينها عند تكدس أكثر من إشعار.

03

كم تبلغ مهلة الإخفاء التلقائي الافتراضية (delay) للإشعار العائم في Bootstrap 5 بالملي ثانية؟

يضبط Bootstrap 5 المهلة الافتراضية على 5000 ملي ثانية (5 ثوانٍ) مع تفعيل الإخفاء التلقائي.

04

ضبط السمة data-bs-autohide="false" يبقي إشعار الخطأ ظاهراً حتى يغلقه المستخدم بنفسه.

إيقاف الاختفاء التلقائي يمنع ضياع تفاصيل الخطأ المهمة قبل أن يتمكن المستخدم من قراءتها.

05

أي كلاس إضافي لزر الإغلاق يضمن وضوح أيقونة X فوق خلفية إشعار داكنة مثل .text-bg-primary؟

يحوّل الكلاس .btn-close-white لون أيقونة الإغلاق إلى الأبيض الواضح فوق الخلفيات الملونة الداكنة.

06

ما تركيبة سمات ARIA الموصى بها للإشعارات الروتينية الهادئة مثل «تم حفظ المسودة»؟

تنتظر المنطقة الحية الهادئة انتهاء القارئ الصوتي من جملته الحالية ثم تقرأ الإشعار كاملاً بفضل aria-atomic.

07

يجب نقل تركيز لوحة المفاتيح قسراً عبر .focus() إلى داخل كل إشعار عائم فور ظهوره.

سحب التركيز يقطع كتابة المستخدم وعمله الجاري؛ تتولى سمات aria-live إعلان الرسالة دون تحريك التركيز.

08

أي سمة على زر الإغلاق داخل الإشعار تتولى إخفاء الإشعار تلقائياً دون كتابة كود إغلاق يدوي؟

تأمر السمة الحديثة data-bs-dismiss="toast" بإغلاق الإشعار بسلاسة وإطلاق أحداث الإخفاء.