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

التبويبات والأزرار الملاحية في بوتستراب 5Bootstrap 5 Tabs and Pills

صمّم واجهات التبويبات التفاعلية في بوتستراب 5.3 عبر .nav-tabs و.nav-pills وشريط .nav-underline الحديث ولوحات المحتوى المتبدلة بـ Vanilla JS.
أقسام الدرس
6
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

انطلاقاً من لبنة .nav التي أتقنتها في الدرس السابق، يكفي إلحاق كلاس واحد هو .nav-tabs لتحويل القائمة المجردة إلى شريط تبويبات كلاسيكي ذي خط سفلي متصل وإطار بارز يحيط بالتبويب النشط .active.

تمنحك الواجهات المبوبة القدرة على تنظيم المحتوى المترابط — مثل تفاصيل المنتج والمواصفات التقنية والمراجعات — داخل نفس المساحة البصرية دون إجبار الزائر على تمرير صفحة طويلة مرهقة.

HTML
<ul class="nav nav-tabs">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page"
      href="#">Details</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Specs</a>
  </li>
</ul>

تميل لوحات التحكم الحديثة غالباً إلى أنماط أكثر رشاقة من التبويبات المؤطرة التقليدية، ويوفر لك بوتستراب 5.3 خيارين أصيلين جاهزين:

  • الأزرار الكبسولية عبر .nav-pills — تملأ العنصر النشط بلون الهوية الأساسي مع زوايا مستديرة، مما يناسب فلاتر التصنيف ومبدلات الاشتراكات.
  • شريط الخط السفلي عبر .nav-underline — ميزة حديثة أُضيفت في الإصدار 5.3 تميز العنصر النشط بخط سفلي بارز ووزن خط عريض مع مسافات تلقائية متناسقة.
HTML
<ul class="nav nav-underline mb-3">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page"
      href="#">All</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Pinned</a>
  </li>
</ul>

عندما تضم الواجهة أربعة أقسام رئيسية إلى جانب خيارات فرعية إضافية كالتقارير المؤرشفة، فإن حشر ثمانية تبويبات في سطر واحد يربك القراءة. يمكنك دمج قائمة منسدلة مباشرةً داخل .nav-tabs أو .nav-pills بجمع الكلاسين .nav-item و.dropdown على عنصر القائمة، وإعطاء الزر .nav-link.dropdown-toggle مع data-bs-toggle="dropdown" ثم إرفاق قائمة .dropdown-menu القياسية.

لتبديل لوحات المحتوى لحظياً دون إعادة تحميل الصفحة، تربط إضافة التبويبات البرمجية في بوتستراب منطقتين متجاورتين:

  1. شريط المشغلات — أزرار تحمل السمة data-bs-toggle="tab" أو data-bs-toggle="pill" مع تحديد معرّف اللوحة الهدف عبر data-bs-target="#paneId".
  2. حاوية اللوحات .tab-content — تضم عناصر .tab-pane مطابقة لمعرّفات الأهداف، ويُضاف الكلاس .fade لكل لوحة لمنحها تلاشيًا بصرياً ناعماً، مع وضع .show.active على اللوحة المفتوحة مبدئياً.
مخطط يوضح الربط التفاعلي وأدوار الإتاحة بين أزرار التبويبات ولوحات المحتوى في بوتستراب 5
HTML
<div class="nav nav-tabs" role="tablist">
  <button class="nav-link active" data-bs-toggle="tab"
    data-bs-target="#tab-a" type="button">Overview</button>
  <button class="nav-link" data-bs-toggle="tab"
    data-bs-target="#tab-b" type="button">Metrics</button>
</div>
<div class="tab-content p-3 border border-top-0">
  <div class="tab-pane fade show active" id="tab-a">A</div>
  <div class="tab-pane fade" id="tab-b">B</div>
</div>

تعتمد لوحات الإعدادات المتقدمة كثيراً على وضع أزرار كبسولية عمودية بجانب منطقة المحتوى عبر حاوية .d-flex .align-items-start تجمع عمود .nav.flex-column.nav-pills مع حاوية .tab-content.

ولتحقيق معايير الإتاحة القياسية للتبويبات التفاعلية، تتكامل ثلاثة أدوار معاً: إسناد role="tablist" للحاوية مع aria-orientation="vertical" في الوضع العمودي، وإسناد role="tab" مع aria-controls وaria-selected لكل زر، وإسناد role="tabpanel" مع aria-labelledby لكل لوحة، فيفعّل بوتستراب التنقل بمفاتيح الأسهم تلقائياً.

باستخدام جافاسكريبت القياسية الصرفة دون أي اعتماد على jQuery، يمكنك فتح أي تبويب برمجياً عبر استدعاء bootstrap.Tab.getOrCreateInstance(triggerEl).show()؛ وهي مهارة عملية لبناء معالجات الخطوات المتتالية أو فتح تبويب معين بناءً على رابط الصفحة.

كما يطلق بوتستراب أحداث دورة حياة دقيقة على أزرار التبويبات مثل show.bs.tab القابل للإلغاء قبل التبديل، وshown.bs.tab بعد اكتمال الانتقال البصري؛ حيث يشير event.target إلى التبويب الجديد بينما يحتفظ event.relatedTarget بالتبويب السابق.

الكلاس أو الواجهة البرمجيةالوظيفةالشرط الأساسي
.nav-tabs و.nav-pillsتبويبات مؤطرة أو أزرار كبسوليةيُدمجان مع الحاوية الأساسية .nav
.nav-underlineشريط الخط السفلي الحديث في BS 5.3يعتمد متغير الفجوة --bs-nav-underline-gap
data-bs-toggle="tab"تبديل اللوحات تصريحياً بدون كوديقترن بسمة الهدف data-bs-target="#id"
.tab-content و.tab-pane.fadeحاوية ولوحات العرض المتبدلةتحتاج اللوحة الأولى إلى .show.active
bootstrap.Tab.getOrCreateInstance()التحكم البرمجي بـ Vanilla JSاستدعاء .show() على زر المشغل
shown.bs.tabحدث اكتمال إظهار التبويبيوفر event.target وevent.relatedTarget
HTML
<button id="goSpecsBtn" class="btn btn-sm btn-primary mb-2">
  Open Specs Tab via JS
</button>
<div id="tabLog" class="small text-muted">Ready</div>
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

أتقنت في هذا الدرس تصميم أشرطة التبويبات الكلاسيكية والكبسولية والخط السفلي الحديث في بوتستراب 5.3، ودمج القوائم المنسدلة، وتبديل لوحات المحتوى بأدوار الإتاحة الكاملة والتحكم البرمجي بـ Vanilla JS. الخطوة التالية: انتقل الآن إلى درس «شريط التنقل Navbar في بوتستراب 5» لبناء أشرطة المواقع المتجاوبة وقوائم الهاتف المطوية والمنزلقة.

مشاركة

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

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

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

المصطلحات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Tab Pane (.tab-pane) لوحة محتوى التبويب
حاوية محتوى فرعية داخل .tab-content تظهر عند تفعيل زر التبويب المرتبط بمعرّفها.
للمراجعة
02 Underline Nav (.nav-underline) شريط التنقل ذو الخط السفلي
نمط حديث في الإصدار 5.3 يميز التبويب النشط بمؤشر خط سفلي أنيق دون إطار صندوقي محيط.
للمراجعة
03 WAI-ARIA Tablist Pattern ثلاثية إتاحة التبويبات
التكامل القياسي بين أدوار tablist وtab وtabpanel لدعم قارئات الشاشة والتنقل بمفاتيح الأسهم.
للمراجعة
04 Related Target (event.relatedTarget) العنصر المرتبط السابق
خاصية في حدث التبويب تشير إلى زر التبويب الذي كان نشطاً مباشرةً قبل عملية التبديل.
للمراجعة

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

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

الاختصارات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 WAI مبادرة إتاحة الويب
Web Accessibility Initiative
مبادرة معيارية تحدد سلوك لوحة المفاتيح وأدوار الإتاحة القياسية لمكونات التبويبات التفاعلية.
للمراجعة
02 DOM نموذج كائنات المستند
Document Object Model
شجرة عناصر الصفحة التي يبدل فيها كائن bootstrap.Tab كلاسي .active و.show لحظياً.
للمراجعة
03 API واجهة برمجة التطبيقات
Application Programming Interface
الدوال والأحداث البرمجية التي يوفرها كائن bootstrap.Tab للتحكم بالتبويبات بجافاسكريبت.
للمراجعة
04 UI واجهة المستخدم
User Interface
التصميم البصري المنظم في لوحات قابلة للتبديل السريع دون إعادة تحميل الصفحة.
للمراجعة

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

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

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

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

0/2مهام منجزة
  1. أنشئ شريط .nav.nav-underline يضم ثلاثة أزرار <button type="button"> مربوطة بسمة data-bs-toggle="tab" مع ثلاث لوحات .tab-pane.fade داخل .tab-content.

  2. أضف زراً خارجياً يستدعي bootstrap.Tab.getOrCreateInstance(targetBtn).show() ويطبع معرّف التبويب الجديد والسابق عند وقوع حدث shown.bs.tab.

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

مساحة التحدي

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

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

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

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

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

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

ما الكلاس الحديث المضاف في بوتستراب 5.3 لتمييز التبويب النشط بخط سفلي أنيق دون إطار صندوقي؟

02

ما الكلاسات الواجب توافرها معاً على لوحة .tab-pane المرئية مبدئياً عند استخدام تأثير التلاشي؟

03

يشترط بوتستراب 5 وجود مكتبة jQuery واستدعاء $("#myTab").tab("show") لتفعيل التبويبات برمجياً.

04

لماذا يفضل توثيق بوتستراب 5.3 استخدام <button type="button"> بدلاً من <a href="#"> لمشغلات التبويبات الداخلية؟

05

داخل مستمع الحدث shown.bs.tab، إلامَ تشير الخاصية event.relatedTarget؟

06

ما ثلاثية أدوار ARIA القياسية المطلوبة لإتاحة التبويبات التفاعلية؟

07

وضع بيانات إدارية حساسة داخل لوحة .tab-pane غير نشطة يحميها من الاطلاع عليها عبر أدوات المطور في المتصفح.

08

عند بناء تبويبات كبسولية عمودية بكلاسي .flex-column و.nav-pills، ما السمة التي توضح اتجاهها لقارئات الشاشة؟