مستندات وأمثلة لتنسيق الجداول الاختياري (نظراً لاستخدامها الواسع في الـ JavaScript plugins) مع الـ Bootstrap.
في هذه الصفحة
نظرة عامة
نظراً للاستخدام الواسع لعناصر <table> عبر الأدوات الخارجية مثل التقويمات ومنتقيات التاريخ، فإن جداول الـ Bootstrap هي اختيارية (opt-in). أضف الفئة الأساسية .table إلى أي عنصر <table>، ثم قم بتوسيعها باستخدام فئات التعديل الاختيارية أو الأنماط المخصصة. جميع أنماط الجداول لا يتم توريثها في الـ Bootstrap، مما يعني أن أي جداول متداخلة يمكن تنسيقها بشكل مستقل عن الجدول الأب.
باستخدام أبسط علامات الجدول، إليك كيف تبدو الجداول القائمة على .table في الـ Bootstrap.
استخدم الفئات السياقية لتلوين الجداول، أو صفوف الجداول، أو الخلايا الفردية.
تنبيه! بسبب تعقيد الـ CSS المستخدم لإنشاء متغيرات الجداول لدينا، فمن المرجح أنها لن تشهد تنسيقاً تكيفياً مع وضع الألوان حتى الإصدار v6.
Class
Heading
Heading
Default
Cell
Cell
Primary
Cell
Cell
Secondary
Cell
Cell
Success
Cell
Cell
Danger
Cell
Cell
Warning
Cell
Cell
Info
Cell
Cell
Light
Cell
Cell
Dark
Cell
Cell
<!-- On tables --><tableclass="table table-primary">...</table><tableclass="table table-secondary">...</table><tableclass="table table-success">...</table><tableclass="table table-danger">...</table><tableclass="table table-warning">...</table><tableclass="table table-info">...</table><tableclass="table table-light">...</table><tableclass="table table-dark">...</table><!-- On rows --><trclass="table-primary">...</tr><trclass="table-secondary">...</tr><trclass="table-success">...</tr><trclass="table-danger">...</tr><trclass="table-warning">...</tr><trclass="table-info">...</tr><trclass="table-light">...</tr><trclass="table-dark">...</tr><!-- On cells (`td` or `th`) --><tr><tdclass="table-primary">...</td><tdclass="table-secondary">...</td><tdclass="table-success">...</td><tdclass="table-danger">...</td><tdclass="table-warning">...</td><tdclass="table-info">...</td><tdclass="table-light">...</td><tdclass="table-dark">...</td></tr>
نصيحة حول إمكانية الوصول: استخدام اللون لإضافة معنى يوفر إشارة بصرية فقط، والتي لن يتم نقلها إلى مستخدمي التقنيات المساعدة مثل قارئات الشاشة. يرجى التأكد من أن المعنى واضح من المحتوى نفسه (على سبيل المثال، النص المرئي مع كافٍ تباين الألوان) أو مدرج عبر وسائل بديلة، مثل نص إضافي مخفي باستخدام الفئة (class) .visually-hidden.
الجداول المميزة
الصفوف المخططة
استخدم .table-striped لإضافة تخطيط "زيبرا" (zebra-striping) إلى أي صف جدول داخل <tbody>.
#
First
Last
Handle
1
Mark
Otto
@mdo
2
Jacob
Thornton
@fat
3
John
Doe
@social
<tableclass="table table-striped">
...
</table>
الأعمدة المخططة
استخدم .table-striped-columns لإضافة تخطيط "زيبرا" إلى أي عمود جدول.
نبدأ بتعيين خلفية خلية الجدول باستخدام الخاصية المخصصة --bs-table-bg. ثم تقوم جميع متغيرات الجداول بتعيين تلك الخاصية المخصصة لتلوين خلايا الجدول. بهذه الطريقة، لا نواجه مشاكل إذا تم استخدام ألوان شبه شفافة كخلفيات للجداول.
ثم نضيف ظل صندوق داخلي (inset box shadow) على خلايا الجدول باستخدام box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg))); ليكون طبقة فوق أي background-color محدد. وهو يستخدم التتالي المخصص (custom cascade) لتجاوز box-shadow، بغض النظر عن خصوصية الـ CSS. ولأننا نستخدم انتشاراً ضخماً وبدون تمويه، سيكون اللون موحداً. وبما أن --bs-table-accent-bg مضبوط على transparent افتراضياً، فليس لدينا ظل صندوق افتراضي.
عند إضافة أي من الفئات .table-striped، .table-striped-columns، .table-hover أو .table-active، يتم تعيين إما --bs-table-bg-type أو --bs-table-bg-state (المضبوط افتراضياً على initial) إلى لون شبه شفاف (--bs-table-striped-bg، --bs-table-active-bg أو --bs-table-hover-bg) لتلوين الخلفية وتجاوز --bs-table-accent-bg الافتراضي.
لكل متغير جدول، نقوم بإنشاء لون --bs-table-accent-bg بأعلى تباين بناءً على ذلك اللون. على سبيل المثال، لون التمييز لـ .table-primary يكون أغمق بينما تمتلك .table-dark لون تمييز أفتح.
يتم إنشاء ألوان النصوص والحدود بنفس الطريقة، ويتم توريث ألوانها افتراضياً.
أضف حداً أكثر سمكاً وأغمق بين مجموعات الجدول—<thead>، <tbody>، و<tfoot>—باستخدام .table-group-divider. يمكنك تخصيص اللون عن طريق تغيير border-top-color (والذي لا نوفر له فئة أداة حالياً في الوقت الحالي).
خلايا الجدول في <thead> تكون دائماً محاذاتهم عمودياً إلى الأسفل. أما خلايا الجدول في <tbody> فترث محاذاتها من <table> وتكون محاذاتهم إلى الأعلى افتراضياً. استخدم فئات المحاذاة العمودية لإعادة المحاذاة عند الحاجة.
Heading 1
Heading 2
Heading 3
Heading 4
This cell inherits vertical-align: middle; from the table
This cell inherits vertical-align: middle; from the table
This cell inherits vertical-align: middle; from the table
This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.
This cell inherits vertical-align: bottom; from the table row
This cell inherits vertical-align: bottom; from the table row
This cell inherits vertical-align: bottom; from the table row
This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.
This cell inherits vertical-align: middle; from the table
This cell inherits vertical-align: middle; from the table
This cell is aligned to the top.
This here is some placeholder text, intended to take up quite a bit of vertical space, to demonstrate how the vertical alignment works in the preceding cells.
<divclass="table-responsive"><tableclass="table align-middle"><thead><tr>
...
</tr></thead><tbody><tr>
...
</tr><trclass="align-bottom">
...
</tr><tr><td>...</td><td>...</td><tdclass="align-top">This cell is aligned to the top.</td><td>...</td></tr></tbody></table></div>
التداخل (Nesting)
أنماط الحدود، والأنماط النشطة، ومتغيرات الجداول لا يتم توريثها بواسطة الجداول المتداخلة.
لمنع تسرب أي أنماط إلى الجداول المتداخلة، نستخدم محدد دمج الأبناء (>) في الـ CSS الخاص بنا. وبما أننا نحتاج إلى استهداف جميع خلايا td و th في thead وtbody و tfoot، فإن محددنا سيبدو طويلاً جداً بدونه. وبناءً على ذلك، نستخدم المحدد الذي يبدو غريباً نوعاً ما .table > :not(caption) > * > * لاستهداف جميع خلايا td وth الخاصة بـ .table، ولكن ليس أي جداول متداخلة محتملة.
لاحظ أنه إذا أضفت <tr> كأبناء مباشرين لجدول، فإن تلك الـ <tr> سيتم تغليفها في <tbody> افتراضياً، مما يجعل محدداتنا تعمل كما هو مقصود.
التشريح (Anatomy)
رأس الجدول (Table head)
على غرار الجداول والجداول الداكنة، استخدم فئات التعديل .table-light أو .table-dark لجعل <thead> تظهر باللون الرمادي الفاتح أو الداكن.
يعمل عنصر <caption> كعنوان للجدول. وهو يساعد المستخدمين الذين يستخدمون قارئات الشاشة في العثور على الجدول وفهم محتواه وتحديد ما إذا كانوا يريدون قراءته.
List of users
#
First
Last
Handle
1
Mark
Otto
@mdo
2
Jacob
Thornton
@fat
3
John
Doe
@social
<tableclass="table table-sm"><caption>List of users</caption><thead>
...
</thead><tbody>
...
</tbody></table>
يمكنك أيضاً وضع <caption> في أعلى الجدول باستخدام .caption-top.
List of users
#
First
Last
Handle
1
Mark
Otto
@mdo
2
Jacob
Thornton
@fat
3
John
Doe
@social
html
<tableclass="table caption-top"><caption>List of users</caption><thead><tr><thscope="col">#</th><thscope="col">First</th><thscope="col">Last</th><thscope="col">Handle</th></tr></thead><tbody><tr><thscope="row">1</th><td>Mark</td><td>Otto</td><td>@mdo</td></tr><tr><thscope="row">2</th><td>Jacob</td><td>Thornton</td><td>@fat</td></tr><tr><thscope="row">3</th><td>John</td><td>Doe</td><td>@social</td></tr></tbody></table>
جداول متوافقة مع الشاشات (Responsive tables)
تسمح الجداول المتوافقة مع الشاشات بتمرير الجداول أفقياً بسهولة. اجعل أي جدول متوافقاً مع الشاشات عبر جميع نوافذ العرض عن طريق تغليف .table بـ .table-responsive. أو اختر أقصى نقطة توقف (breakpoint) ليكون الجدول متوافقاً مع الشاشات حتى تلك النقطة باستخدام .table-responsive{-sm|-md|-lg|-xl|-xxl}.
القص/الاقتطاع العمودي
تستخدم الجداول المتوافقة مع الشاشات overflow-y: hidden، مما يؤدي إلى قص أي محتوى يتجاوز الحواف السفلية أو العلوية للجدول. وبشكل خاص، يمكن أن يؤدي ذلك إلى قص القوائم المنسدلة والأدوات الخارجية الأخرى.
متوافق مع الشاشات دائماً (Always responsive)
عبر كل نقطة توقف، استخدم .table-responsive للجداول التي يتم تمريرها أفقياً.
استخدم .table-responsive{-sm|-md|-lg|-xl|-xxl} حسب الحاجة لإنشاء جداول متوافقة مع الشاشات حتى نقطة توقف معينة. ومن تلك النقطة فصاعداً، سيتصرف الجدول بشكل طبيعي ولن يتم تمريره أفقياً.
قد تظهر هذه الجداول معطلة حتى يتم تطبيق أنماط التوافق مع الشاشات عند عرض نوافذ محددة.