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

البالونات المنبثقة Popovers في بوتستراب 5Bootstrap 5 Popovers

ابنِ بالونات منبثقة Popovers غنية في Bootstrap 5.3 بجافاسكريبت القياسية مع رأس ومتن مستقلين، وتحديد الحاوية والاتجاهات، والإغلاق الذكي بالنقر الخارجي، وتخصيص متغيرات CSS.
أقسام الدرس
5
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 5تصفّح المواضيع

بينما يكتفي التلميح Tooltip بسطر إرشادي عابر يظهر بمجرد مرور الفأرة، يقدّم البالون المنبثق Popover في Bootstrap 5.3 بطاقة معلوماتية عائمة مصغّرة تضم قسماً للعنوان .popover-header (عبر data-bs-title) وقسماً للمحتوى التفصيلي .popover-body (عبر data-bs-content)، وتُفتح افتراضياً بالنقر click بدلاً من المرور السريع.

يُعدّ البالون المنبثق الخيار المثالي لشرح صيغة احتساب ضريبة بجانب حقل سعر، أو عرض شروط كلمة المرور، أو تلخيص صلاحيات دور وظيفي دون مقاطعة سياق المستخدم بفتح نافذة حوارية كاملة Modal تحجب الشاشة.

مقارنة معمارية بين التلميح Tooltip والبالون المنبثق Popover وآلية الإغلاق الخارجي

تماماً مثل التلميحات، تعتمد البالونات المنبثقة على مكتبة Popper المدمجة داخل bootstrap.bundle.min.js وهي ميزة اختيارية التفعيل Opt-in حفاظاً على الأداء؛ لذا نفعّلها في جافاسكريبت القياسية بتمرير العناصر الحاملة للسمة data-bs-toggle="popover" إلى الباني new bootstrap.Popover(el).

إذا رغبت بتحديث محتوى بالون موجود ديناميكياً بعد تهيئته (كإظهار رصيد محفظة محدّث)، استخدم الدالة المخصّصة popover.setContent({ '.popover-header': '...', '.popover-body': '...' }) دون الحاجة لتدمير النسخة وإعادة إنشائها.

HTML
<button type="button" class="btn btn-lg btn-danger"
  data-bs-toggle="popover"
  data-bs-title="Pricing Breakdown"
  data-bs-content="Includes SSL, backups, and CDN.">
  View Plan Info
</button>

يمكنك توجيه البالون في أربعة اتجاهات عبر السمة data-bs-placement بقيم top أو right (الافتراضي للبالون) أو bottom أو left، مع تكفّل محرك Popper بعكس الاتجاه تلقائياً عند الاقتراب من حواف نافذة المتصفح.

وعند إدراج زر البالون داخل مجموعة إدخال .input-group أو صف جدول قابل للتمرير الأفقي .table-responsive، احرص دائماً على تمرير data-bs-container="body" حتى لا يُحشر عنصر البالون داخل حدود الحاوية الضيقة أو يتشوه تنسيق الحقول المجاورة.

HTML
<button type="button" class="btn btn-secondary"
  data-bs-container="body" data-bs-toggle="popover"
  data-bs-placement="top"
  data-bs-content="Top popover">Top</button>
<button type="button" class="btn btn-secondary"
  data-bs-container="body" data-bs-toggle="popover"
  data-bs-placement="bottom"
  data-bs-content="Bottom popover">Bottom</button>

السلوك الافتراضي للبالون المنبثق يتطلب من المستخدم النقر مرةً ثانية على نفس الزر لإغلاقه، وهو ما قد يربك الزائر المعتاد على إغلاق القوائم بمجرد النقر في أي فراغ بالصفحة! لحل ذلك رسمياً في Bootstrap 5، نستخدم نمط الإغلاق بالتركيز Dismiss on next click عبر إضافة data-bs-trigger="focus".

انتبه لشرط التوافق الجوهري عبر كافة المتصفحات (وخاصةً Safari على نظامي macOS وiOS): للحصول على إغلاق خارجي موثوق بسمة data-bs-trigger="focus"، استخدم وسم <a tabindex="0" role="button"> بدلاً من <button> حتى يطلق المتصفح حدث فقدان التركيز blur بشكل متسق عند النقر بعيداً.

HTML
<a tabindex="0" class="btn btn-warning" role="button"
  data-bs-toggle="popover" data-bs-trigger="focus"
  data-bs-title="Dismissible Popover"
  data-bs-content="Click anywhere outside to close!">
  Click Then Click Outside
</a>

يتيح Bootstrap 5.3 تخصيص مظهر البالون المنبثق بدقة عبر متغيرات CSS الممرّرة داخل كلاس مخصص في data-bs-custom-class، مثل تلوين شريط الرأس عبر --bs-popover-header-bg و--bs-popover-header-color، وتعديل عرض البطاقة عبر --bs-popover-max-width، وتلوين الإطار عبر --bs-popover-border-color.

ولإظهار بالون تفسيري فوق زر معطّل disabled، نطبّق نفس قاعدة الغلاف القابل للتركيز <span class="d-inline-block" tabindex="0"> مع ضبط data-bs-trigger="hover focus" حتى لا يشعر المستخدم بأنه ينقر زراً معطلاً يستجيب للنقر!

جدول مرجعي لسمات ومتغيرات البالونات (Popovers Reference)

السمة / متغير CSSالوظيفةأفضل ممارسة عملية
data-bs-toggle="popover"تعريف العنصر كمطلق للبالونيهيّأ برمجياً عبر new bootstrap.Popover(el)
data-bs-title / contentعنوان الرأس ومتن الجسمالمحتوى الفارغ في الاثنين يمنع رسم البالون
data-bs-trigger="focus"الإغلاق عند النقر خارج البالوناستخدمه مع <a tabindex="0" role="button">
--bs-popover-header-bgتلوين خلفية شريط عنوان البالونمرّره عبر كلاس مخصص في data-bs-custom-class
popover.setContent(...)تحديث العنوان أو المتن برمجياًيحدّث النصوص حياً دون إعادة إنشاء النسخة
مخطط تشريح طبقات البالون popover-header وpopover-body ومتغيرات CSS المخصصة
HTML
<style>
  .custom-pop {
    --bs-popover-border-color: var(--bs-primary);
    --bs-popover-header-bg: var(--bs-primary);
    --bs-popover-header-color: var(--bs-white);
  }
</style>
<button type="button" class="btn btn-primary"
  data-bs-toggle="popover" data-bs-custom-class="custom-pop"
  data-bs-title="Themed"
  data-bs-content="Clean CSS vars!">Open</button>
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

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

مشاركة

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

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

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

المصطلحات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Popover Component البالون المنبثق (Popover)
بطاقة معلوماتية عائمة تُفتح بالنقر وتضم شريط عنوان اختياري ومتناً تفصيلياً لشرح عناصر الواجهة دون حجب الشاشة.
للمراجعة
02 Focus-Dismiss Trigger مشغّل الإغلاق بالتركيز
ضبط السمة data-bs-trigger="focus" على رابط قابل للتركيز ليُغلق البالون تلقائياً فور نقر المستخدم في أي مساحة خارجية.
للمراجعة
03 Container Scoping تحديد حاوية الإلحاق
استخدام data-bs-container="body" لإلحاق عنصر البالون بجسم المستند منعاً لاقتصاصه داخل الجداول أو تشويه مجموعات الحقول.
للمراجعة
04 Dynamic setContent API واجهة تحديث المحتوى الحية
دالة برمجية في Bootstrap تحدّث نصوص عنوان ومتن البالون لحظياً دون الحاجة لإعادة تهيئة الكائن من الصفر.
للمراجعة

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

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

الاختصارات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 CSS أوراق الأنماط المتتالية
Cascading Style Sheets
توفّر متغيرات --bs-popover-* المحلية لتلوين رأس البالون وحدوده وعرضه الأقصى دون تعارض أنماط.
للمراجعة
02 ARIA تطبيقات الإنترنت الغنية المتاحة
Accessible Rich Internet Applications
توفّر سمة role="button" على الروابط المشغّلة للبالون وتربط محتواه بقارئات الشاشة.
للمراجعة
03 DOM نموذج كائن المستند
Document Object Model
شجرة عناصر الصفحة التي يُدرج فيها Bootstrap عنصر البالون عند الفتح ويزيله عند الإغلاق.
للمراجعة
04 XSS البرمجة عبر المواقع
Cross-Site Scripting
مخاطر حقن السكربتات التي يصدّها معقّم Bootstrap تلقائياً داخل عنوان ومتن البالون.
للمراجعة

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

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

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

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

0/2مهام منجزة
  1. استخدم وسم <a tabindex="0" role="button"> مع data-bs-toggle="popover" وdata-bs-trigger="focus" وعنوان ومتن واضحين وفعّله بجافاسكريبت.

  2. عرّف كلاس CSS يخصّص متغيرات خلفية الرأس ولون نصه ولون الإطار ثم اربطه بالبالون عبر data-bs-custom-class.

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

مساحة التحدي

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

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

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

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

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

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

ما الحدث التفاعلي الافتراضي الذي يفتح البالون المنبثق Popover في Bootstrap 5 على خلاف التلميح؟

يُفتح البالون بالنقر افتراضياً ليتمكن المستخدم من قراءة العنوان والشرح التفصيلي بهدوء.

02

أي سمة تحدّد النص الرئيسي لجسم البالون (.popover-body) في Bootstrap 5؟

تملأ السمة data-bs-title رأس البالون بينما تملأ data-bs-content جسم البالون الرئيسي.

03

لضمان إغلاق البالون بالنقر الخارجي عبر كافة المتصفحات مع data-bs-trigger="focus"، أي عنصر يُنصح باستخدامه؟

يضمن استخدام الرابط القابل للتركيز إطلاق أحداث التركيز وفقدانه بانتظام على متصفحات Safari وChrome وFirefox.

04

البالون الذي تكون قيمتا data-bs-title وdata-bs-content فيه فارغتين يظهر كصندوق أبيض فارغ عند النقر.

يمتنع Bootstrap تماماً عن عرض البالون إذا خلا كل من العنوان والمحتوى من أي نص.

05

أي متغير CSS يغيّر لون خلفية شريط عنوان البالون في Bootstrap 5.3؟

يخصّص المتغير --bs-popover-header-bg لون خلفية شريط رأس البالون مباشرةً.

06

لماذا يُنصح بضبط data-bs-trigger="hover focus" عند عرض بالون توضيحي فوق زر معطّل؟

يحافظ التفعيل بالمرور والتركيز على الإحساس بتعطّل الزر مع إظهار وإخفاء سبب التعطيل بسلاسة.

07

استدعاء دالة setContent() في Bootstrap 5.3 يحدّث نصوص البالون برمجياً دون الحاجة لتدمير النسخة وإعادة إنشائها.

صُممت دالة setContent() لتحديث الرأس أو المتن ديناميكياً بكفاءة مع الحفاظ على تعقيم المحتوى.

08

لماذا يجب إضافة data-bs-container="body" لزر البالون الموضوع داخل مجموعة حقول .input-group؟

إلحاق البالون بوسم body يحافظ على سلامة محددات الأبناء داخل .input-group ويمنع قصّ البطاقة العائمة.