إطار Bootstrap 5
التنقل والتبويبات
التنقل والتبويبات في Bootstrap 5
يوفر Bootstrap مكونات تنقل مرنة يمكن تصميمها كتبويبات أو حبوب أو قوائم تنقل أساسية مع دعم الحالات النشطة والعناصر المعطلة.
1. أنماط التنقل الأساسية
توفر فئة .nav الأساسية الأساس لمكونات التنقل:
<ul class="nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">نشط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">معطل</a>
</li>
</ul>
ملاحظة: لا تتضمن فئة
.nav تصميمًا افتراضيًا للحالات النشطة. تحتاج إلى إضافة فئات معدلة مثل .nav-tabs أو .nav-pills.
2. التنقل مع التبويبات
أضف .nav-tabs لإنشاء واجهة مبوبة:
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" href="#">نشط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">معطل</a>
</li>
</ul>
3. التنقل مع الحبوب
أضف .nav-pills للحصول على تنقل بنمط الحبوب:
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link active" href="#">نشط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">معطل</a>
</li>
</ul>
4. الملء والتبرير
فرض امتداد عناصر التنقل على كامل العرض:
<!-- الملء: تأخذ العناصر عرضًا متناسبًا -->
<ul class="nav nav-pills nav-fill">
<li class="nav-item">
<a class="nav-link active" href="#">نشط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط تنقل أطول بكثير</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
</ul>
<!-- التبرير: تأخذ العناصر عرضًا متساويًا -->
<ul class="nav nav-pills nav-justified">
<li class="nav-item">
<a class="nav-link active" href="#">نشط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط تنقل أطول بكثير</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
</ul>
نصيحة: استخدم
.nav-fill عندما تريد تحجيم العناصر بشكل متناسب، و .nav-justified عندما تريد جميع العناصر بنفس العرض.
5. التنقل العمودي
قم بتكديس عناصر التنقل عموديًا باستخدام .flex-column:
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link active" href="#">نشط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">معطل</a>
</li>
</ul>
<!-- حبوب عمودية -->
<ul class="nav nav-pills flex-column">
<li class="nav-item">
<a class="nav-link active" href="#">نشط</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">رابط</a>
</li>
</ul>
6. محتوى التبويبات
أنشئ واجهات مبوبة ديناميكية مع تكامل JavaScript:
<!-- تبويبات التنقل -->
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab"
data-bs-toggle="tab" data-bs-target="#home"
type="button" role="tab">الرئيسية</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab"
data-bs-toggle="tab" data-bs-target="#profile"
type="button" role="tab">الملف الشخصي</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="contact-tab"
data-bs-toggle="tab" data-bs-target="#contact"
type="button" role="tab">اتصل</button>
</li>
</ul>
<!-- ألواح التبويبات -->
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel">
<p>محتوى الرئيسية يذهب هنا...</p>
</div>
<div class="tab-pane fade" id="profile" role="tabpanel">
<p>محتوى الملف الشخصي يذهب هنا...</p>
</div>
<div class="tab-pane fade" id="contact" role="tabpanel">
<p>محتوى الاتصال يذهب هنا...</p>
</div>
</div>
ملاحظة: يتطلب محتوى التبويبات سمة
data-bs-toggle="tab" وقيم data-bs-target متطابقة.
7. الحبوب مع محتوى التبويبات
استخدم الحبوب بدلاً من التبويبات للحصول على مظهر مختلف:
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="pills-home-tab"
data-bs-toggle="pill" data-bs-target="#pills-home"
type="button" role="tab">الرئيسية</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-profile-tab"
data-bs-toggle="pill" data-bs-target="#pills-profile"
type="button" role="tab">الملف الشخصي</button>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-home" role="tabpanel">
محتوى الرئيسية...
</div>
<div class="tab-pane fade" id="pills-profile" role="tabpanel">
محتوى الملف الشخصي...
</div>
</div>
8. الحبوب العمودية مع التبويبات
أنشئ تنقلًا جانبيًا مع ألواح المحتوى:
<div class="row">
<div class="col-3">
<ul class="nav nav-pills flex-column" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" data-bs-toggle="pill"
data-bs-target="#v-pills-home">الرئيسية</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" data-bs-toggle="pill"
data-bs-target="#v-pills-profile">الملف الشخصي</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" data-bs-toggle="pill"
data-bs-target="#v-pills-settings">الإعدادات</button>
</li>
</ul>
</div>
<div class="col-9">
<div class="tab-content">
<div class="tab-pane fade show active" id="v-pills-home">
محتوى الرئيسية...
</div>
<div class="tab-pane fade" id="v-pills-profile">
محتوى الملف الشخصي...
</div>
<div class="tab-pane fade" id="v-pills-settings">
محتوى الإعدادات...
</div>
</div>
</div>
</div>
9. واجهة برمجة JavaScript
تحكم في التبويبات برمجيًا باستخدام JavaScript:
// تهيئة التبويبات
const triggerTabList = document.querySelectorAll('#myTab button');
triggerTabList.forEach(triggerEl => {
const tabTrigger = new bootstrap.Tab(triggerEl);
triggerEl.addEventListener('click', event => {
event.preventDefault();
tabTrigger.show();
});
});
// عرض تبويب محدد
const triggerEl = document.querySelector('#profile-tab');
bootstrap.Tab.getInstance(triggerEl).show();
// الاستماع لأحداث التبويب
const tabEl = document.querySelector('button[data-bs-toggle="tab"]');
tabEl.addEventListener('shown.bs.tab', event => {
console.log('تبويب جديد:', event.target); // التبويب المنشط حديثًا
console.log('تبويب سابق:', event.relatedTarget); // التبويب النشط السابق
});
تمرين
أنشئ واجهة مبوبة لصفحة منتج تتضمن:
- ثلاثة تبويبات: "الوصف"، "المواصفات"، "المراجعات"
- استخدم نمط nav-pills
- يجب أن يحتوي كل لوح تبويب على محتوى عينة
- أضف تأثير التلاشي عند التبديل بين التبويبات
- اجعل التبويبات استجابية (استخدم nav-fill على الهاتف المحمول)
- قم بتضمين تبويب واحد على الأقل معطل بعنوان "الفيديوهات (قريبًا)"