الرئيسية تعليم لغات البرمجة تنسيق الجداول برمجياً في CSS

تنسيق الجداول برمجياً في CSS

amr gamal سبتمبر 14, 2026
في الدرس السابق، تعرفنا على كيفية التحكم في مظهر النصوص والفقرات وإضافة بعض اللمسات الجمالية عليها لتبدو صفحات الويب أكثر جاذبية واحترافية. اليوم، سننتقل خطوة جديدة ومهمة في مسار تعلم لغة CSS، وهي تنسيق الجداول برمجياً. الجداول من العناصر الأساسية التي نستخدمها في تصميم واجهات الويب لعرض البيانات، المقارنات، والنتائج بشكل منظم ومقروء للمستخدم. في الماضي، كانت الجداول تستخدم لهيكلة وبناء صفحات الويب بالكامل، وهو أسلوب تم تجاوزه تماماً اليوم لصالح تقنيات حديثة مثل Flexbox وGrid. أما الآن، فنحن نستخدم الجداول لهدفها الأساسي والوحيد: عرض البيانات الجدولية. ومع ذلك، فإن هيكل الجدول الافتراضي الذي توفره لغة HTML يكون عادةً مجرداً وبسيطاً للغاية، وبدون تنسيق دقيق، قد تبدو البيانات متداخلة وصعبة القراءة. من هنا يأتي دور لغة CSS لنقل هذه الجداول من شكل بدائي إلى جداول منظمة، تفاعلية، وسهلة القراءة. خلال هذا الدرس، سنتعلم كيف نتعامل مع عناصر الجدول المختلفة مثل الخلايا، الصفوف، العناوين، وكيفية تطبيق خصائص تنسيق الحدود، المسافات، الألوان المتبادلة، وتحسين تجربة المستخدم أثناء قراءة البيانات الكثيفة. فهم هيكل الجدول في HTML قبل تنسيقه قبل أن نبدأ بكتابة قواعد CSS، من الضروري أن نستذكر باختصار كيف يبدو هيكل الجدول الأساسي في HTML. الجدول يتكون عادةً من عنصر رئيسي وهو table، وبداخله نقسم المحتوى إلى أجزاء مثل رأس الجدول thead، وجسم الجدول tbody. الصفوف تُعرّف بوسم tr، وعناوين الأعمدة بوسوم th، بينما الخلايا التي تحتوي على البيانات العادية تُعرّف بوسوم td. عندما نبدأ بكتابة الكود البرمجي لتنسيق الجدول، فإننا لا نستهدف عنصر الجدول ككل فحسب، بل نستهدف كل جزء منه على حدة لنمنح التصميم الدقة المطلوبة. دعونا نبدأ بمثال عملي متكامل يوضح كيفية بناء جدول بيانات وتنسيقه خطوة بخطوة. مثال عملي متكامل لتنسيق جدول بيانات سنقوم الآن بإنشاء صفحة ويب تحتوي على جدول بسيط يعرض قائمة ببعض المنتجات وأسعارها وحالتها، وسنطبق عليه مجموعة من خصائص CSS الأساسية والمهمة. إليك الكود كاملاً:
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<title>تنسيق الجداول برمجياً</title>
<style>
body {
    font-family: Tahoma, sans-serif;
    background-color: #f9f9f9;
    padding: 20px;
}
table {
    width: 100%;
    border-collapse: collapse;
    background-color: #ffffff;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05);
    margin-top: 20px;
}
th, td {
    padding: 12px 15px;
    text-align: right;
    border-bottom: 1px solid #e0e0e0;
}
th {
    background-color: #2c3e50;
    color: #ffffff;
    font-weight: bold;
}
tr:nth-child(even) {
    background-color: #f8f9fa;
}
tr:hover {
    background-color: #f1f2f6;
}
</style>
</head>
<body>
<h2>قائمة المنتجات المتاحة</h2>
<table>
<thead>
<tr>
<th>اسم المنتج</th>
<th>السعر</th>
<th>الحالة</th>
</tr>
</thead>
<tbody>
<tr>
<td>شاشة عرض ذكية</td>
<td>350 دولار</td>
<td>متوفر</td>
</tr>
<tr>
<td>لوحة مفاتيح ميكانيكية</td>
<td>75 دولار</td>
<td>متوفر</td>
</tr>
<tr>
<td>فأرة لاسلكية</td>
<td>40 دولار</td>
<td>نفذت الكمية</td>
</tr>
<tr>
<td>سماعات رأس احترافية</td>
<td>120 دولار</td>
<td>متوفر</td>
</tr>
</tbody>
</table>
</body>
</html>
شرح مفصل للكود والخصائص المستخدمة دعونا نكفكك القواعد البرمجية التي كتبناها في الكود السابق لنتعرف على دور كل خاصية وكيف تساهم في تحسين مظهر الجدول: 1. خاصية دمج الحدود (border-collapse): افتراضياً، تظهر الجداول في المتصفحات بمسافات وفراغات مزدوجة بين حدود الخلايا. لكي نحصل على تصميم نظيف واحترافي، نستخدم خاصية border-collapse: collapse; على العنصر table. هذه الخاصية تدمج الحدود المتجاورة لتصبح خطاً واحداً متصلاً، وهو المعيار الحديث في تصميم واجهات الويب. 2. التحكم في أبعاد الجدول والخلايا: حددنا عرض الجدول ليغطي الشاشة بالكامل عبر width: 100%; ليتكيف مع مختلف أحجام الأجهزة. ولضمان عدم التصاق النصوص بحواف الخلايا، استخدمنا خاصية padding: 12px 15px; على عناصر العناوين th والخلايا td. هذه المساحة الداخلية تمنح النص متنفساً وتجعل القراءة مريحة للعين. 3. تنسيق رأس الجدول (thead): رأس الجدول هو أول ما يقع عليه بصر المستخدم، لذا خصصناه بلون خلفية داكن background-color: #2c3e50; مع لون نص أبيض color: #ffffff; لضمان تباين عالٍ وواضح يسهل قراءة أسماء الأعمدة. 4. الألوان المتبادلة للصفوف (Zebra Striping): عندما يحتوي الجدول على صفوف كثيرة ومتتالية، تصبح متابعة سطر معين أمراً شاقاً على العين. لحل هذه المشكلة، نستخدم المحدد المتقدم tr:nth-child(even) والذي يتيح لنا استهداف الصفوف الزوجية فقط وتطبيق لون خلفية خفيف عليها مثل #f8f9fa;. هذا التناوب اللوني البسيط بين صف أبيض وصف رمادي فاتح يسهل جداً تتبع البيانات أفقياً. 5. التفاعل البصري عند تحريك المؤشر (Hover Effect): أضفنا القاعدة tr:hover لتغيير خلفية الصف الذي تمر فوقه فأرة المستخدم إلى لون أغمق قليلاً #f1f2f6;. هذه اللمسة التفاعلية البسيطة تعزز تجربة المستخدم بشكل كبير، حيث تجعله يشعر بالاستجابة الفورية وتمنعه من الخطأ في تتبع البيانات عبر الصفوف الطويلة. أخطاء شائعة عند تنسيق الجداول حتى مع بساطة الخصائص، يقع المطورون المبتدئون في بعض الأخطاء المتكررة التي تؤثر على جودة وتصميم الجداول: - الاعتماد المفرط على الحدود الثقيلة: استخدام حدود سميكة وملونة بقوة لكل خلية يجعل الجدول يبدو مزدحماً ومزعجاً بصرياً. الأفضل هو استخدام حدود خفيفة جداً وفاتحة اللون، أو الاكتفاء بالخطوط الأفقية فقط عبر تطبيق الحدود على border-bottom كما فعلنا في مثالنا. - إهمال التجاوب مع الشاشات الصغيرة (Responsiveness): الجداول بطبيعتها عناصر صلبة وعريضة. عندما تفتح جدولاً كبيراً على شاشة هاتف محمول ضيقة، ستلاحظ أن الجدول يخرج عن حدود الشاشة ويظهر شريط تمرير أفقي مزعج. في المستويات المتقدمة، سنتعلم كيف نعالج هذه المشكلة عبر تقنيات مثل الحاويات القابلة للتمرير أو تحويل الجداول إلى بطاقات، ولكن كمبتدئ، عليك الانتباه دائماً لتقليل الحشوات الكبيرة وإبقاء النصوص مختصرة قدر الإمكان عند تصميم جداول مخصصة للهواتف. - تجاهل اتجاه النصوص (Direction): في اللغات التي تكتب من اليمين لليسار مثل اللغة العربية، يجب التأكد من ضبط الخاصية dir="rtl" في عنصر HTML الرئيسي، وتحديد محاذاة النصوص داخل الخلايا بما يتناسب معها (غالباً إلى اليمين)، بينما الأرقام والعملات قد تبدو أجمل أحياناً إذا تم تنسيقها بشكل محاذاة مناسب أو باستخدام خطوط ثابتة العرض (Monospace) لتسهيل مقارنة القيم العددية. حالات استخدام إضافية لتحسين الجداول إلى جانب البيانات البسيطة، قد تحتاج في مشاريعك الحقيقية إلى التعامل مع حالات أكثر تعقيداً مثل الجداول التي تحتوي على خلايا مدمجة (Colspan أو Rowspan) أو الجداول الطويلة التي تتطلب تثبيت رأس الجدول أثناء التمرير (Sticky Headers). يمكنك تحقيق ذلك بسهولة باستخدام خاصية التموضع في CSS مثل position: sticky; وربطها برأس الجدول top: 0; ليبقى مرئياً دائماً للمستخدم أثناء تصفح البيانات الطويلة. إضافات هيكلية لتعزيز أداء الجداول البرمجية عندما نتحدث عن تنسيق الجداول برمجياً، من الضروري أن ندرك أن الجداول لا تقتصر على عرض النصوص فحسب، بل يمكن أن تحتوي على عناصر تفاعلية أخرى مثل الأزرار، حقول الإدخال، أو حتى الروابط. تنسيق هذه العناصر داخل الجدول يتطلب عناية خاصة لضمان عدم خروجها عن حدود الخلايا أو تسببها في إفساد التصميم العام. على سبيل المثال، إذا قمت بوضع زر داخل خلية جدول، فقد تحتاج إلى تقليل الحشوات الداخلية للزر أو ضبط خاصية box-sizing لتفادي تمدد الصف بشكل غير مبرر. دعونا نلقي نظرة على مثال متقدم يوضح كيفية التعامل مع جدول يحتوي على عناصر تفاعلية وأزرار تحكم، وكيفية تطبيق قواعد CSS متقدمة لضبط مظهرها.
<table class="admin-table">
<thead>
<tr>
<th>المستخدم<th>
<th>البريد الإلكتروني</th>
<th>الصلاحية</th>
<th>الإجراءات</th>
</tr>
</thead>
<tbody>
<tr>
<td>أحمد محمد</td>
<td>ahmed@example.com</td>
<td>مدير النظام</td>
<td>
<button class="btn-edit">تعديل</button>
<button class="btn-delete">حذف</button>
</td>
</tr>
</tbody>
</table>
تنسيق العناصر الداخلية للجدول لتنسيق هذا النوع من الجداول الذي يحتوي على أزرار تحكم داخل الخلايا، يجب إضافة قواعد مخصصة لضمان التناسق البصري. إليك الكود الخاص بتنسيق جدول الإدارة هذا:
.admin-table {
    width: 100%;
    border-collapse: collapse;
    background-color: #ffffff;
    font-family: Arial, sans-serif;
}
.admin-table th, .admin-table td {
    padding: 14px 18px;
    text-align: right;
    border-bottom: 1px solid #edf2f7;
    vertical-align: middle;
}
.admin-table th {
    background-color: #3182ce;
    color: #ffffff;
}
.admin-table td button {
    padding: 6px 12px;
    margin-left: 5px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
}
.btn-edit {
    background-color: #48bb78;
    color: #ffffff;
}
.btn-delete {
    background-color: #e53e3e;
    color: #ffffff;
}
.admin-table tr:hover {
    background-color: #ebf8ff;
}
ملاحظات حول المحاذاة العمودية (vertical-align) في الكود أعلاه، استخدمنا خاصية vertical-align: middle; مع الخلايا. هذه الخاصية تلعب دوراً محورياً في تنسيق الجداول، حيث تضمن أن محتويات الخلية (سواء كانت نصاً عادياً أو أزراراً أو أيقونات) تتركز بشكل عمودي وسط الخلية تماماً، مما يمنع حدوث أي ميل غير مرغوب فيه للأعلى أو الأسفل عند اختلاف أحجام العناصر داخل نفس الصف. أفضل الممارسات البرمجية لتنظيم ملفات CSS الخاصة بالجداول عندما تتعامل مع مشاريع ويب ضخمة تحتوي على العديد من الجداول المختلفة، فإن كتابة جميع قواعد CSS في مكان واحد قد يؤدي إلى صعوبة الصيانة لاحقاً. من الأفضل دائماً اعتماد نهج وحدات التنسيق (Modular CSS)، حيث تقوم بإنشاء فئة أساسية عامة للجداول (مثل table.base-table) لتطبيق الخصائص المشتركة مثل الحدود ودمج الخلايا، ثم استخدام فئات فرعية أو معدلات (Modifiers) لتخصيص جداول معينة مثل جداول البيانات المالية، أو جداول المنتجات، أو جداول المستخدمين. هذا الأسلوب لا يحسن فقط من مقروءية الكود البرمجي، بل يسهل أيضاً عملية تعديل التصميم وتحديثه في المستقبل دون التأثير على باقي أجزاء الموقع. خلاصة الدرس تنسيق الجداول برمجياً باستخدام CSS ليس بالأمر المعقد، لكنه يتطلب عناية بالتفاصيل لضمان تقديم بيانات منظمة ومريحة للبصر. من خلال التحكم في المساحات الداخلية، ودمج الحدود، واستخدام الألوان المتبادلة للصفوف، وإضافة تأثيرات التمرير، وتحسين مظهر العناصر الداخلية كالازرار، تستطيع تحويل أي جدول بيانات تقليدي إلى عنصر أنيق واحترافي في موقعك. في الدروس القادمة، سنستمر في استكشاف المزيد من تقنيات CSS لبناء صفحات ويب أكثر تكاملاً.
الكاتب
عمرو جمال

محرر متخصص في تطوير قوالب بلوجر وووردبريس وتقديم شروحات التقنية. أقدم حلولاً مبتكرة لتصميم مواقع عصرية وجذابة.