الجداول في HTML
مدرج تحت قسم: دروس
عندما بدأنا نرى دعوات لاستخدام المعايير القياسية في تطوير المواقع بدأت النقاشات تدور حول الطريقة الصحيحة لتصميم المواقع، وقد كان النقاش غالباً يدور حول استخدام الجداول لإنشاء التصاميم وكيف يمكن استبدالها، مع تكرار هذه النقاشات وتعمقها في التفاصيل ظن البعض أن الجداول يجب ألا تستخدم أبداً بأي شكل، وهذا أمر غير صحيح، الجداول جزء من المعايير القياسية إن استخدمت للغرض الذي صممت له وهو عرض البيانات.
ماذا يعني ذلك؟ ببساطة إذا أردت أن تعرض بيانات مجدولة فعليك أن تستخدم جدولاً، فمثلاً تصور أنك تريد المقارنة بين مواصفات سيارتين، يمكنك أن تفعل ذلك في جدول، فكل سيارة لها عمود خاص وكل صف يتعلق بإحدى المواصفات، فالصف الأول مثلاً يذكر نوع المحرك وقوته، الصف الثاني يقارن سرعة السيارة وهكذا.
الجداول يمكن استخدامها لعرض الكثير من المعلومات، وهي تختصر الوقت على القارئ، تصور مثلاً أنك أردت عرض أرباح وخسائر 100 شركة في سوق الأسهم، يمكنك أن تفعل ذلك بدون جداول لكن الجدول سيبسط عرض المعلومات ويجعلها سهلة الفهم.
في هذا الدرس سنتعلم بعض عناصر HTML المتعلقة بالجداول، وقد قمت بعمل جدول كمثال عملي ويحوي الجدول ترتيب فرق كرة القدم في الدوري الإماراتي، لست مهتماً بكرة القدم وهذا مجرد مثال:
ترتيب الفرق في دوري الإمارات لكرة القدم
| النادي | المباريات | النقاط |
| الشباب | 5 | 15 |
| العين | 4 | 9 |
| الشارقة | 4 | 8 |
وهكذا كتبت المثال في HTML:
<p align="center">ترتيب الفرق في دوري الإمارات لكرة القدم</p> <table> <tr> <td>النادي</td> <td>المباريات</td> <td>النقاط</td> </tr> <tr> <td>الشباب</td> <td>5</td> <td>15</td> </tr> <tr> <td>العين</td> <td>4</td> <td>9</td> </tr> <tr> <td>الشارقة</td> <td>4</td> <td>8</td> </tr> </table>
لاحظ أنني استخدمت العنصر p لوضع فقرة تصف الجدول، واستخدمت الخاصية align لوضعه في منتصف الصفحة، هذا أسلوب غير دقيق ومن المفترض ألا يستخدمه أي محترف في تطوير المواقع، ثم وضعت الجدول وقد استخدمت العناصر table وtr وtd، وهذه العناصر معروفة لكل من درس أساسيات HTML، بمعنى آخر لا جديد تحت الشمس.
لنقم بتحسين الجدول قليلاً، فبدلاً من استخدام العنصر p سنقوم باستخدام العنصر caption لوضع وصف للجدول:
<table> <caption>ترتيب الفرق في دوري الإمارات لكرة القدم</caption> <tr> <td>النادي</td> <td>المباريات</td> <td>النقاط</td> </tr> <tr> <td>الشباب</td> <td>5</td> <td>15</td> </tr> <tr> <td>العين</td> <td>4</td> <td>9</td> </tr> <tr> <td>الشارقة</td> <td>4</td> <td>8</td> </tr> </table>
عندما تضع وصفاً للجدول يجب أن يكون مختصراً ويصف محتويات الجدول، وإذا استخدمت العنصر caption سيقوم المتصفح بوضع الوصف فوق الجدول مباشرة، وبالطبع يمكنك تغيير شكل وموقعه من خلال CSS.
الآن الجدول متفق مع المعايير القياسية بشكل أفضل، لكن يمكن أن نحسنه أكثر من ذلك، هناك عنصر في HTML يسمى th أو table heading وهو كما يمكنك أن تخمن متعلق برأس الجدول، فالصف الأول لا يحوي أي بيانات بل يبين نوع البيانات (النادي، المباريات، النقاط) ولذلك من المنطقي أن نستخدم له عنصر th بدلاً من td والذي يعني table data أو بيانات الجدول.
<table> <caption>ترتيب الفرق في دوري الإمارات لكرة القدم</caption> <tr> <th>النادي</th> <th>المباريات</th> <th>النقاط</th> </tr> <tr> <td>الشباب</td> <td>5</td> <td>15</td> </tr> <tr> <td>العين</td> <td>4</td> <td>9</td> </tr> <tr> <td>الشارقة</td> <td>4</td> <td>8</td> </tr> </table>
نعم، الآن الجدول منطقي أكثر، وحتى بدون CSS يمكن لمن يقرأ الحدول أن يميز بين البيانات وبين رأس الجدول، فالنصوص في رأس الجدول ستكون سميكة وسيحاذيها المتصفح إلى المنتصف من كل خلية.
ماذا يمكننا أن نفعل أيضا؟ هناك الخاصية summary التي تستخدم في العنصر table، وهي خاصية مفيدة لمن يستخدم أجهزة لا تحوي شاشات لعرض الصفحة، مثل قارئ بريل للمكفوفين أو البرامج التي تقرأ الصفحات للمكفوفين أو لضعاف البصر وكذلك أجهزة أخرى صوتية، إضافة ملخص للجدول ليس صعباً:
<table summary="جدول ترتيب الفرق في دوري الإمارات لكرة القدم 2007"> <caption>ترتيب الفرق في دوري الإمارات لكرة القدم</caption> <tr> <th>النادي</th> <th>المباريات</th> ...
هل هناك المزيد؟ بالتأكيد، لدينا العناصر thead وtfoot وtbody، فالعنصر thead متعلق برأس الجدول، أما tfoot فهو بالبيانات الموجودة في آخر الجدول، وtbody لبيانات الجدول، بالتأكيد لا يجب عليك أن تستخدم هذه العناصر، لكن في بعض الأحيان من الأفضل أن تفعل ذلك خصوصاً عندما تتعامل مع جداول كبيرة معقدة، ويمكنك أن تضع هذه العناصر بهذا الترتيب، thead أولاً ثم tfoot ثم tbody بهذا الشكل:
<table> <thead> <tr> .... محتويات رأس الجدول هنا ... </tr> </thead> <tfoot> <tr> .... محتويات ذيل الجدول هنا ... </tr> </tfoot> <tbody> <tr> .... محتويات الجدول هنا ... </tr> <tr> .... محتويات الجدول هنا ... </tr> <tr> .... محتويات الجدول هنا ... </tr> </tbody> </table>
هل هذا كل شيء؟ بالتأكيد لا، هناك الكثير يمكن تعلمه حول الجداول، يمكن أن نجعلها أكثر منطقية وقابلة أكثر للوصول، لكن أكتفي بهذا القدر هنا في هذا الدرس وفي درس قادم سأتحدث عن العناصر col وcolgroup وعن الخاصية headers التي تستخدم للعنصر td والتي تساعد ذوي الاحتياجات الخاصة على فهم الجداول أكثر.


جميل جداً..
استغربت عندما رأيت كود المثال الأول لأنك لم تستخدم caption، ثم رأيت بعدها أنك تريد التوضيح فقط.
كنت أعتقد ذلك أيضاً عندما ظهرت المعايير، فيم سنستخدم الجداول إذاً، ثم فكرت بشكل منطقي، كما في المجلات وأي مكان، الجداول تستخدم لعرض الإحصائيات والأمور التي تحتاجها، إذاً هنا أيضاً نستخدم الجداول فيما يحتاج للجداول كما في الحياة الواقعية والمجلات.
summary كنت أستخدمها ولكن لم أعرف فائدها فعلياً إلا الآن. أما فيما يتعلق بـ tbody وجماعتها، فلديّ استفسار:
قلت أن tfoot تأتي بعد thead مباشرة وأنها تعرض ذيل الجدول، فطالما أنها تعرض الذيل، ألا يجب أن تكون تحت tbody؟
أشكرك أيضاً فلم أكن أعرف فائدتها فعلاً..
موفق..
شكرًا لك ..
أستطيع القول أن 90% من هذا الدرس جديد و مركز بالنسبة لي ..
أبدعت بأسلوبك السهل الممتنع :-)
شكرا ً جزيلا ً …
الله يعطيك العافية على الشرح الرائع
أنا من المتابعين باستمرار لمواضيعك الرائعة بحق … و اليوم زايرك مخصوص عشان بدي منك شرح المقابل للجداول في الـ (HTML) بس بتقنية الـ (Web 2.0) أو بمعنى أصح بالـ ( CSS ) …
أنا عندي خلفية منيحة و الحمدلله باستخدام الـ (CSS) بس توصلت لحد الجداول و توقفت في سكريبت قاعد بجهز فيه … معتمد على الـ (CSS) و الـ (AJAX) مع الـ (PHP & MySQL) … و مش حابب إني ادخل الـ (table) بالسكريبت ..
فياريت من بعد إذنك تحط لنا شرح عن هالموضوع …
مع فائق التقدير و الاحترام لك :)
المبدع العربي: لا يجب أن تكون tfoot في نهاية الجدول، بحسب ما قرأت يجب أن توضع قبل tbody وستظهر محتويات tfoot في نهاية الجدول، وكما قرأت أيضاً إذا قام الزائر بطباعة الصفحة ولنقل مثلاً أن الجدول طويل وطبع في ثلاث صفحات، محتويات tfoot ستظهر في نهاية الجدول من كل صفحة، لم أجرب ذلك بل هذا ما قرأت، وكما قلت هذه العناصر ليست أساسية، يمكنك ألا تستخدمها.
سامي منصور: أخي الكريم، هناك أمور عدة يجب توضيحها، الجداول مهمة في الويب 2.0 أيضاً … حقيقة الجداول مهمة في الويب سواء 2.0 أو 3.0 أو غيرها، فهي لها وظيفة عرض البيانات كما وضحت في مقالتي هذه، أما CSS فهي شيء آخر مختلف تماماً، فهي تتعلق بالتصميم لا البيانات، وهناك دروس عديدة تشرح كيفية تصميم المواقع باستخدام CSS.
ما قلته في مقالتي هذه أن الجداول مهمة ويجب أن تستخدم للغرض الذي صممت له وهو عرض البيانات، وقد تحدثت في الموضوع عن ذلك ولم أتحدث عن التصميم.
مبدع أخوي يعطيك العافيه شرح مبسط جدا
أشكر القائمين على هذا الموقع فيه شروحات أكثر من رائعه
الله يعطيكم العافيه و يجعلها في ميزان حسناتكم
موضوع جميل .. ومهم جداً
شاكر لكم ساكمل رحلتي في البحث عن بقية المواضيع الشيقة