جداول در HTML — راهنمای جامع
در این مقاله به بررسی جداول در HTML میپردازیم و با موارد کاملاً سادهای مانند ردیف و سلول، عنوان، گسترش سلول به چند ردیف یا ستون و شیوه گروهبندی همه سلولها در یک ستون برای استایلدهی آشنا میشویم. پیشنیاز این مطلب آشنایی با مبانی HTML است. برای مطالعه قسمت قبلی این مجموعه آموزشی میتوانید روی لینک زیر کلیک کنید:
جدول چیست؟
جدول مجموعه ساختیافتهای از ردیفها و ستونها است.
جدول امکان بررسی سریع و آسان مقادیر را فراهم میسازد و نوعی ارتباط بین انواع مختلف دادهها به نمایش نمیگذارد. برای نمونه ارتباطی را بین یک فرد و سن وی یا یک روز یا هفته و یا جدول زمانی یک استخر را نمایش میدهد.
جدولها در جامعه بشری کاربرد بسیار رایجی دارند و این کاربرد نیز مدتهای مدیدی تداوم داشته است. در تصویر زیر جدولی از یک سند سنای ایالات متحده را در سال 1800 مشاهده میکنید.
به همین دلیل جای شگفتی نیست که خالقان زبان HTML ابزاری ارائه کردهاند که به وسیله آن میتوان دادههای جدولی را روی وب ساختاربندی و ارائه کرد.
طرز کار جدول چگونه است؟
نکته مهم در جدول این است که به صورت یک «شبکه» (grid) است. اطلاعات به سادگی با ایجاد ارتباط دیداری بین عناوین ردیفها و ستونها نمایان میشوند. برای نمونه به جدول زیر نگاه کنید که سیاره مشتری را به عنوان یک غول گازی با 62 قمرش نمایش میدهد. برای یافتن پاسخ میتوانید عناوین ردیفها و ستونهای مرتبط را دنبال کنید.
دادههای سیارات منظومه شمسی
نام | جرم (1024kg) | قطر (km) | چگالی (kg/m3) | گرانش (m/s2) | طول روز (ساعت) | فاصله از خورشید (106km) | میانگین دما (°C) | تعداد اقمار | توضیح | ||
---|---|---|---|---|---|---|---|---|---|---|---|
سیارات خاکی | عطارد | 0.330 | 4,879 | 5427 | 3.7 | 4222.6 | 57.9 | 167 | 0 | نزدیکترین به خورشید | |
ناهید | 4.87 | 12,104 | 5243 | 8.9 | 2802.0 | 108.2 | 464 | 0 | |||
زمین | 5.97 | 12,756 | 5514 | 9.8 | 24.0 | 149.6 | 15 | 1 | دنیای ما | ||
بهرام | 0.642 | 6,792 | 3933 | 3.7 | 24.7 | 227.9 | -65 | 2 | سیاره سرخ | ||
سیارات مشتریسان | غولهای گازی | مشتری | 1898 | 142,984 | 1326 | 23.1 | 9.9 | 778.6 | 110- | 67 | بزرگترین سیاره |
کیوان | 568 | 120,536 | 687 | 9.0 | 10.7 | 1433.5 | 140- | 62 | |||
غولهای یخی | اورانوس | 86.8 | 51,118 | 1271 | 8.7 | 17.2 | 2872.5 | 195- | 27 | ||
نپتون | 102 | 49,528 | 1638 | 11.0 | 16.1 | 4495.1 | 200- | 14 | |||
سیارات کوتوله | پلوتو | 0.0146 | 2,370 | 2095 | 0.7 | 153.3 | 5906.4 | 225- | 5 | در سال 2006 به عنوان سیاره دستهبندی شد. |
اگر یک جدول به طرز صحیحی طراحی شده باشد، حتی افراد نابینا نیز میتوانند دادههای موجود در یک جدول HTML را تفسیر کند. یک جدول مناسب HTML موجب بهبود تجربه کاربری افراد بینا و همچنین کاربران دچار نقص بینایی میشود.
استایلدهی به جدول
برای مشاهده مثال زنده جدول فوق به این صفحه (+) مراجعه کنید. نکتهای که متوجه میشویم این است که جدول در این صفحه خواناتر به نظر میرسد. دلیل این امر آن است که جدولی که در بخش قبلی این صفحه دیدیم، دارای کمترین «استایلدهی» (Styling) بود، در حالی که نسخه گیتهاب دارای CSS زیادی است.
شکی نیست که برای کسب بالاترین کارایی از جدولهای وب باید نوعی اطلاعات استایلدهی با CSS ارائه شود و همچنین ساختار HTML مناسبی مورد استفاده قرار گرفته باشد. در این بخش از سری مقالات آموزش HTML روی بخش HTML متمرکز خواهیم شد. با این حال مقداری stylesheet CSS نیز برای خواناتر ساختن جدولها استفاده خواهیم کرد. این نسخه مینیمال از سند HTML به صورت زیر است:
فایل HTML
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <title>Table template</title>
6 <link href="minimal-table.css" rel="stylesheet" type="text/css">
7 </head>
8 <body>
9 <h1>Table template</h1>
10
11
12 </body>
13</html>
فایل CSS
1html {
2 font-family: sans-serif;
3}
4
5table {
6 border-collapse: collapse;
7 border: 2px solid rgb(200,200,200);
8 letter-spacing: 1px;
9 font-size: 0.8rem;
10}
11
12td, th {
13 border: 1px solid rgb(190,190,190);
14 padding: 10px 20px;
15}
16
17th {
18 background-color: rgb(235,235,235);
19}
20
21td {
22 text-align: center;
23}
24
25tr:nth-child(even) td {
26 background-color: rgb(250,250,250);
27}
28
29tr:nth-child(odd) td {
30 background-color: rgb(245,245,245);
31}
32
33caption {
34 padding: 10px;
35}
این دو فایل به کمک همدیگر نقطه آغاز خوبی برای تجربه جدولهای HTML به دست میدهند.
چه هنگام نباید از جداول HTML استفاده کنیم؟
جدولهای HTML باید برای دادههای جدولی استفاده شوند، چون برای ارائه چنین دادههایی طراحی شدهاند. متأسفانه افراد زیادی عادت دارند از جدولهای HTML برای طرحبندی صفحههای وب استفاده کنند. یعنی مثلاً از یک ردیف برای قرار دادن عنوان مطلب استفاده میکنند، یک ردیف را به ستونهای محتوا و ردیف دیگر را به فوتر اختصاص میدهند. دلیل عمده این کار آن است که پشتیبانی از CSS در میان مرورگرهای مختلف وضعیت مناسبی ندارد. با این که طرحبندیهای جدولی این روزها بسیار نادر شده است؛ اما همچنان در جاهای مختلف وب میتوان آنها را مشاهده کرد.
به بیان خلاصه استفاده از جدول برای طرحبندی به جای تکنیکهای طرحبندی مبتنی بر CSS ایده بدی محسوب میشود. دلایل اصلی این مسئله به صورت زیر هستند:
جدولهای طرحبندی، برای کاربران دچار نقص بینایی دسترسپذیری کمتری دارند: ابزارهای قرائت صفحه که از سوی افراد نابینا استفاده میشوند، تگهای موجود در صفحه HTML را شناسایی کرده و محتوای آن را برای کاربر میخوانند. از آنجا که جدولها ابزار مناسبی برای طرحبندی نیستند و نشانهگذاری با استفاده از تکنیکهای طرحبندی CSS دشوارتر میشود، خروجی ابزارهای قرائت صفحه موجب سردرگمی کاربران خواهد شد.
جدولها موجب ازدحام تگ میشوند: همان طور که پیشتر اشاره کردیم طرحبندی جدولی عموماً شامل ساختارهای نشانهگذاری پیچیدهتری نسبت به تکنیکهای صحیح طرحبندی است. این امر موجب میشود که نوشتن، نگهداری و دیباگ کردن کد دشوارتر شود.
جدولها به صورت خودکار واکنشگرا نیستند: هنگامی که از کانتینرهای طرحبندی صحیحی مانند <header> ،<section> ،<article> یا <div> استفاده میکنید، مقادیر پیشفرض عرض آنها 100% از عنصر والدشان است. در سوی دیگر، جدولها به صورت پیشفرض بر اساس محتوایشان اندازهبندی میشوند و از این رو به معیارهای بیشتری برای استایلدهی مؤثر طرحبندی جدولی روی دستگاههای متفاوت نیاز خواهیم داشت.
مثال: ایجاد نخستین جدول
تا به این جا به قدر کافی در مورد مبانی نظری جدولها صحبت کردیم، اینک نوبت آن رسیده است که در یک مثال عملی اقدام به ساخت یک جدول ساده بکنیم.
قبل از هر چیز کدهای زیر را کپی کرده و به ترتیب در فایلهایی با نام blank-template.html و minimal-table.css روی سیستم خود در یک دایرکتوری جدید ذخیره کنید.
فایل blank-template.html
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <title>Table template</title>
6 <link href="minimal-table.css" rel="stylesheet" type="text/css">
7 </head>
8 <body>
9 <h1>Table template</h1>
10
11
12 </body>
13</html>
فایل minimal-table.css
1html {
2 font-family: sans-serif;
3}
4
5table {
6 border-collapse: collapse;
7 border: 2px solid rgb(200,200,200);
8 letter-spacing: 1px;
9 font-size: 0.8rem;
10}
11
12td, th {
13 border: 1px solid rgb(190,190,190);
14 padding: 10px 20px;
15}
16
17th {
18 background-color: rgb(235,235,235);
19}
20
21td {
22 text-align: center;
23}
24
25tr:nth-child(even) td {
26 background-color: rgb(250,250,250);
27}
28
29tr:nth-child(odd) td {
30 background-color: rgb(245,245,245);
31}
32
33caption {
34 padding: 10px;
35}
محتوای همه جدولها درون دو تگ <table></table> قرار میگیرد و این دو تگ نیز درون بخش body در سند HTML قرار دارند.
کوچکترین بخش در یک جدول سلول نام دارد که به وسیله عنصر td ساخته میشود. td اختصاری برای عبارت «دادههای جدول» (table data) است. عبارت زیر را درون تگهای جدول وارد کنید:
1<td>Hi، I'm your first cell.</td>
اگر بخواهیم یک ردیف از جدول چهار سلول داشته باشد، باید این تگها را سه بار کپی کنیم. محتوای جدول را به صورت زیر بهروزرسانی کنید:
1<td>Hi، I'm your first cell.</td>
2<td>I'm your second cell.</td>
3<td>I'm your third cell.</td>
4<td>I'm your fourth cell.</td>
همان طور که میبینید، سلولها زیر همدیگر قرار نمیگیرند؛ بلکه به صورت خودکار روی همان ردیف و همراستا با یکدیگر قرار میگیرند. هر عنصر <td> یک سلول منفرد ایجاد میکند و با همدیگر ردیف نخست جدول را تشکیل میدهند. هر سلول که اضافه میکنیم، ردیف طولانیتر میشود.
برای توقف رشد بیش از حد ردیف و شروع به جایگذاری سلولها روی ردیف دوم، باید از عنصر <tr> استفاده کنیم. tr اختصاری برای عبارت «ردیف جدول» (table row) است. در ادامه این عنصر را بررسی میکنیم.
چهار سلول را که قبلاً ایجاد کردیم مانند حالت زیر درون تگهای <tr> قرار دهید:
1<tr>
2 <td>Hi, I'm your first cell.</td>
3 <td>I'm your second cell.</td>
4 <td>I'm your third cell.</td>
5 <td>I'm your fourth cell.</td>
6</tr>
اکنون یک ردیف ایجاد شده است، میخواهیم یک یا دو ردیف دیگر نیز ایجاد کنیم که هر ردیف باید درون عناصر <tr> دیگر قرار گیرد و هر سلول نیز درون یک <td> باشد. بدین ترتیب جدولی مانند زیر ایجاد میشود:
افزودن Header با عناصر <th>
اکنون باید توجه خود را معطوف به هدرهای جدول بکنیم. سلولهای خاصی در جدول هستند که در ابتدای ردیف یا ستون حضور دارند و نوع دادهای که در آن ردیف یا ستون وجود دارد را تعریف میکنند. برای نمونه سلولهای Person و Age در مثال فوق چنین حالتی دارند.
برای نشان دادن دلیل مفید بودن هدر باید نگاهی به یک مثال از جدول بیندازیم. برای نمونه کد زیر را ملاحظه کنید:
1<table>
2 <tr>
3 <td> </td>
4 <td>Knocky</td>
5 <td>Flor</td>
6 <td>Ella</td>
7 <td>Juan</td>
8 </tr>
9 <tr>
10 <td>Breed</td>
11 <td>Jack Russell</td>
12 <td>Poodle</td>
13 <td>Streetdog</td>
14 <td>Cocker Spaniel</td>
15 </tr>
16 <tr>
17 <td>Age</td>
18 <td>16</td>
19 <td>9</td>
20 <td>10</td>
21 <td>5</td>
22 </tr>
23 <tr>
24 <td>Owner</td>
25 <td>Mother-in-law</td>
26 <td>Me</td>
27 <td>Me</td>
28 <td>Sister-in-law</td>
29 </tr>
30 <tr>
31 <td>Eating Habits</td>
32 <td>Eats everyone's leftovers</td>
33 <td>Nibbles at food</td>
34 <td>Hearty eater</td>
35 <td>Will eat till he explodes</td>
36 </tr>
37</table>
رندر عملی جدول به صورت زیر است:
Knocky | Flor | Ella | Juan | |
Breed | Jack Russell | Poodle | Streetdog | Cocker Spaniel |
Age | 16 | 9 | 10 | 5 |
Owner | Mother-in-law | Me | Me | Sister-in-law |
Eating Habits | Eats everyone's leftovers | Nibbles at food | Hearty eater | Will eat till he explodes |
مشکل در این جا آن است که گرچه میتوان تا حدودی فرایندی که اتفاق میافتد را درک کرد، اما این کار به اندازهای که دادههای چند رفرنسی دارند آسان نیست. اگر ردیف یا ستون دارای نوعی از عنوان بودند این کار بسیار آسانتر بود.
مثال: هدرهای جدول
در ادامه قصد داریم این جدول را بهبود ببخشیم. ابتدا محتوای زیر را در فایلهایی با نام مشخصشده در یک دایرکتوری جدید روی سیستم خود کپی کنید.
فایل dogs-table.html
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <title>Dogs table</title>
6 <link href="minimal-table.css" rel="stylesheet" type="text/css">
7 </head>
8 <body>
9 <h1>Dogs Table</h1>
10
11 <table>
12 <tr>
13 <td> </td>
14 <td>Knocky</td>
15 <td>Flor</td>
16 <td>Ella</td>
17 <td>Juan</td>
18 </tr>
19 <tr>
20 <td>Breed</td>
21 <td>Jack Russell</td>
22 <td>Poodle</td>
23 <td>Streetdog</td>
24 <td>Cocker Spaniel</td>
25 </tr>
26 <tr>
27 <td>Age</td>
28 <td>16</td>
29 <td>9</td>
30 <td>10</td>
31 <td>5</td>
32 </tr>
33 <tr>
34 <td>Owner</td>
35 <td>Mother-in-law</td>
36 <td>Me</td>
37 <td>Me</td>
38 <td>Sister-in-law</td>
39 </tr>
40 <tr>
41 <td>Eating Habits</td>
42 <td>Eats everyone's leftovers</td>
43 <td>Nibbles at food</td>
44 <td>Hearty eater</td>
45 <td>Will eat till he explodes</td>
46 </tr>
47 </table>
48
49
50 </body>
51</html>
فایل minimal-table.css
1html {
2 font-family: sans-serif;
3}
4
5table {
6 border-collapse: collapse;
7 border: 2px solid rgb(200,200,200);
8 letter-spacing: 1px;
9 font-size: 0.8rem;
10}
11
12td, th {
13 border: 1px solid rgb(190,190,190);
14 padding: 10px 20px;
15}
16
17th {
18 background-color: rgb(235,235,235);
19}
20
21td {
22 text-align: center;
23}
24
25tr:nth-child(even) td {
26 background-color: rgb(250,250,250);
27}
28
29tr:nth-child(odd) td {
30 background-color: rgb(245,245,245);
31}
32
33caption {
34 padding: 10px;
35}
سند HTML شامل برخی نژادهای سگ است که قبلاً دیدیم.
برای این که هدرها هم به صورت دیداری و هم معناشناختی به عنوان هدر جدول شناسایی شوند، میتوانید از عنصر <th> استفاده کنید. th اختصاری برای عبارت «هدر جدول» (Table Header) است. طرز کار این عنصر دقیقاً مشابه <td> است، به جز این که یک هدر را نمایندگی میکند و نه یک سلول معمولی. به سند HTML بروید و عناصر <td> پیرامون هدرهای جدول را به عناصر <th> تغییر دهید. سند HTML را ذخیره کرده و آن را در یک مرورگر پیادهسازی کنید. بدین ترتیب مشاهده خواهید کرد که هدرها اینک مانند هدر نمایش مییابند.
چرا هدرها مفید هستند؟
ما قبلاً تا حدودی به این سؤال پاسخ دادهایم. با استفاده از هدرها یافتن دادههایی که به صورت عنوان در جدول علامتگذاری شدهاند، بسیار آسانتر خواهد بود و طراحی جدول نیز به طور کلی ظاهر بهتری خواهد داشت.
نکته: عنوان جدول دارای یک استایلدهی پیشفرض هستند. یعنی در صورتی که هیچ استایلی برای جدول اختصاص داده نباشید، به صورت درشت و با چیدمان مرکزی نمایش پیدا میکند تا تفاوتش برجسته شود.
هدرهای جدول یک مزیت افزوده نیز در راستای خصوصیت scope دارند و آن این است که با ایجاد امکان مرتبط کردن هر هدر با همه دادههای ردیف یا ستون، دسترسپذیری بیشتری فراهم میسازند. بدین ترتیب ابزارهای قرائت صفحه میتوانند کل ردیف یا ستون داده را به صورت یکباره بخوانند که کاملاً مفید است. در مورد Scope در بخش بعدی این سری مقالات آموزشی، بیشتر صحبت خواهیم کرد.
گسترش سلولها به چند ردیف یا ستون
برخی اوقات لازم میشود که سلولها را به چند ردیف یا ستون گسترش دهیم. مثال ساده زیر را در نظر بگیرید که نامهای حیوانهای رایج را نمایش میدهد. در برخی موارد میخواهیم نام گونههای نر و ماده را نیز در کنار نام حیوان نمایش دهیم. در پارهای موارد نیز چنین چیزی را نمیخواهیم. در چنین مواردی میخواهیم که نام حیوان کل جدول را پوشش دهد. نشانهگذاری اولیه به صورت زیر است:
1<table>
2 <tr>
3 <th>Animals</th>
4 </tr>
5 <tr>
6 <th>Hippopotamus</th>
7 </tr>
8 <tr>
9 <th>Horse</th>
10 <td>Mare</td>
11 </tr>
12 <tr>
13 <td>Stallion</td>
14 </tr>
15 <tr>
16 <th>Crocodile</th>
17 </tr>
18 <tr>
19 <th>Chicken</th>
20 <td>Hen</td>
21 </tr>
22 <tr>
23 <td>Rooster</td>
24 </tr>
25</table>
اما خروجی کار آنچه را مد نظر ما است در اختیارمان قرار نمیدهد.
ما باید راهی بیابیم که عبارتهای Animals ،Hippopotamus و Crocodile هر دو ستون را اشغال کنند و Horse و Chicken به سمت پایین و دو ردیف گسترش یابند. خوشبختانه سلولهای هدر جدول خصوصیتهای colspan و rowspan دارد که به ما امکان میدهد این کارها را انجام دهیم. هر دو این خصوصیتها مقدار عددی را نمایش میدهند که معادل تعداد ردیفها یا ستونهایی است که قرار است گسترش یابند. برای نمونه colspan="2" موجب میشود که سلول در دو ستون گسترش یابد.
بنابراین از colspan و rowspan برای بهبود جدول استفاده میکنیم. ابتدا محتوای کدهای زیر را در دو فایل در یک دایرکتوری جدید روی سیستم خود قرار دهید.
فایل animals-table.html
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <title>Animals table</title>
6 <link href="minimal-table.css" rel="stylesheet" type="text/css">
7 </head>
8 <body>
9 <h1>Animals table</h1>
10
11 <table>
12 <tr>
13 <th>Animals</th>
14 </tr>
15 <tr>
16 <th>Hippopotamus</th>
17 </tr>
18 <tr>
19 <th>Horse</th>
20 <td>Mare</td>
21 </tr>
22 <tr>
23 <td>Stallion</td>
24 </tr>
25 <tr>
26 <th>Crocodile</th>
27 </tr>
28 <tr>
29 <th>Chicken</th>
30 <td>Hen</td>
31 </tr>
32 <tr>
33 <td>Rooster</td>
34 </tr>
35 </table>
36
37
38 </body>
39</html>
فایل minimal-table.css
1html {
2 font-family: sans-serif;
3}
4
5table {
6 border-collapse: collapse;
7 border: 2px solid rgb(200,200,200);
8 letter-spacing: 1px;
9 font-size: 0.8rem;
10}
11
12td, th {
13 border: 1px solid rgb(190,190,190);
14 padding: 10px 20px;
15}
16
17th {
18 background-color: rgb(235,235,235);
19}
20
21td {
22 text-align: center;
23}
24
25tr:nth-child(even) td {
26 background-color: rgb(250,250,250);
27}
28
29tr:nth-child(odd) td {
30 background-color: rgb(245,245,245);
31}
32
33caption {
34 padding: 10px;
35}
سند HTML شامل همان مثال حیوانات قبلی است. سپس از colspan برای گسترش دادن ردیفهای Animals، Hippopotamus و Crocodile به دو ستون استفاده میکنیم. در نهایت از rowspan استفاده میکنیم تا Horse و Chicken در دو ردیف گسترش یابند. فایل را ذخیره کرده و در مرورگر باز کنید تا شاهد بهبود اتفاق افتاده باشید.
نسخه نهایی باید به صورت زیر باشد:
استایلدهی مشترک برای ستونها
آخرین ویژگی جدولها که در این مقاله بررسی خواهیم کرد، روشی برای تعریف اطلاع استایلدهی کل ستون دادهها است. این کار با استفاده از عناصر <col> و <colgroup> اجرا میشود. دلیل نیاز به این دو عنصر آن است که در برخی موارد تعریف استایلدهی ستونها ممکن است کار دشواری باشد، چون مجبور هستید این اطلاعات را برای همه عناصر <td> و <th> ستون تعریف کنید و یا از سلکتورهای پیچیدهتری مانند ()nth-child: استفاده کنید. مثال ساده زیر را در نظر بگیرید:
1<table>
2 <tr>
3 <th>Data 1</th>
4 <th style="background-color: yellow">Data 2</th>
5 </tr>
6 <tr>
7 <td>Calcutta</td>
8 <td style="background-color: yellow">Orange</td>
9 </tr>
10 <tr>
11 <td>Robots</td>
12 <td style="background-color: yellow">Jazz</td>
13 </tr>
14</table>
کد فوق خروجی زیر را در اختیار ما قرار میدهد:
Data 1 | Data 2 |
---|---|
Calcutta | Orange |
Robots | Jazz |
این وضعیت ایدهآلی نیست، زیرا باید اطلاعات استایل را روی هر سه ستون جدول تکرار کنیم. در صورت استفاده از CSS نیز باید کلاسی داشته باشیم که روی هر سه سلول تعریف شود و اطلاعات استایلدهی را در یک استایلشیت مجزا بیاوریم. به جای این کارها، میتوانیم این اطلاعات را یک بار و روی عنصر <col> بیاوریم. عناصر <col> درون کانتینر <colgroup> و درست زیر تگ آغازین <table> تعریف میشوند. بدین ترتیب همان حالت که در مثال قبل دیدیم، با استفاده از کد زیر نیز به دست میآید:
1<table>
2 <colgroup>
3 <col>
4 <col style="background-color: yellow">
5 </colgroup>
6 <tr>
7 <th>Data 1</th>
8 <th>Data 2</th>
9 </tr>
10 <tr>
11 <td>Calcutta</td>
12 <td>Orange</td>
13 </tr>
14 <tr>
15 <td>Robots</td>
16 <td>Jazz</td>
17 </tr>
18</table>
ما در عمل دو «ستون استایل» (style columns) تعریف میکنیم که یکی برای تعیین اطلاعات استایلدهی برای هر ستون است. ما ستون نخست را استایلدهی نمیکنیم، اما همچنان باید عنصر <col> را برای آن قید کنیم، چون اگر چنین نکنیم، استایلدهی در مورد ستون نخست نیز اعمال خواهد شد. اگر خواسته باشیم اطلاعات استایلدهی را روی هر دو ستون اِعمال کنیم، میتوانیم یک عنصر <col> را با یک خصوصیت span روی آن به صورت زیر قید کنیم:
1<colgroup>
2 <col style="background-color: yellow" span="2">
3</colgroup>
span نیز همانند colspan و rowspan مقدار عددی بی واحدی میگیرد که تعداد ستونهایی که قرار است اطلاعات استایلدهی روی آنها اعمال شوند، نشان میدهد.
مثال: colgroup و col
اینک زمان آن رسیده است که آموختههای خود را به بوته آزمایش بگذارید. در ادامه جدول زمانبندی آموزش زبان یک مدرسه را میبینید. این معلم در روزهای جمعه یک کلاس جدید برای تدریس زبان آلمانی در سراسر روز دارد. اما وی زبان آلمانی را در پارهای از ساعتهای روزهای سهشنبه و پنج شنبه نیز آموزش میدهد. او میخواهد ستونهایی را که شامل روزهای تدریس هستند هایلایت کند.
با پیگیری مراحل زیر میتواند جدول فوق را ایجاد کنید. ابتدا محتوای کد زیر را در یک دایرکتوری جدید و در فایلی با نام timetable.html روی سیستم خود کپی کنید.
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <title>School timetable</title>
6 <style>
7 html {
8 font-family: sans-serif;
9 }
10 table {
11 border-collapse: collapse;
12 border: 2px solid rgb(200,200,200);
13 letter-spacing: 1px;
14 font-size: 0.8rem;
15 }
16 td, th {
17 border: 1px solid rgb(190,190,190);
18 padding: 10px 20px;
19 }
20 td {
21 text-align: center;
22 }
23 caption {
24 padding: 10px;
25 }
26 </style>
27 </head>
28 <body>
29 <h1>School timetable</h1>
30
31 <table>
32 <tr>
33 <td> </td>
34 <th>Mon</th>
35 <th>Tues</th>
36 <th>Wed</th>
37 <th>Thurs</th>
38 <th>Fri</th>
39 <th>Sat</th>
40 <th>Sun</th>
41 </tr>
42 <tr>
43 <th>1st period</th>
44 <td>English</td>
45 <td> </td>
46 <td> </td>
47 <td>German</td>
48 <td>Dutch</td>
49 <td> </td>
50 <td> </td>
51 </tr>
52 <tr>
53 <th>2nd period</th>
54 <td>English</td>
55 <td>English</td>
56 <td> </td>
57 <td>German</td>
58 <td>Dutch</td>
59 <td> </td>
60 <td> </td>
61 </tr>
62 <tr>
63 <th>3rd period</th>
64 <td> </td>
65 <td>German</td>
66 <td> </td>
67 <td>German</td>
68 <td>Dutch</td>
69 <td> </td>
70 <td> </td>
71 </tr>
72 <tr>
73 <th>4th period</th>
74 <td> </td>
75 <td>English</td>
76 <td> </td>
77 <td>English</td>
78 <td>Dutch</td>
79 <td> </td>
80 <td> </td>
81 </tr>
82 </table>
83
84
85 </body>
86</html>
- این کد HML شامل جدولی است که در بخش قبل دیدیم به جز این که اطلاعات استایلدهی ستون در آن نیامده است.
- یک عنصر <colgroup> در ابتدای جدول و درست زیر عنصر <table> اضافه کنید که در آن میتوانید عناصر <col> خود را درج کنید.
- دو ستون نخست باید بدون استایلدهی حفظ شوند.
- یک رنگ پسزمینه به ستون سوم اضافه کنید. مقدار خصوصیت style به صورت background-color:#97DB9A باید باشد.
- یک عرض جداسازی روی ستون چهارم قید کنید و مقدار خصوصیت style برابر با width: 42px خواهد بود.
- یک رنگ پسزمینه به ستون پنجم اضافه کنید. مقدار خصوصیت style برای آن به صورت background-color: #97DB9A است.
- یک رنگ پسزمینه متفاوت به علاوه یک حاشیه به ستون ششم اضافه کنید تا مشخص سازید که این روز یک روز خاص است و باید یک کلاس جدید تدریس شود. مقدار خصوصیت style را به صورت زیر تعیین کنید:
background-color:#DCC48E; border:4px solid #C1437A
- دو روز آخر هفته تعطیل هستند و از این رو به آنها هیچ رنگ پسزمینه ندهید و فقط عرض آنها را با تعریف خصوصیت style به صورت width: 42px تعیین کنید.
اگر در هر مرحله از کار با مشکل مواجه شدید، میتوانید به کد کامل زیر مراجعه کنید:
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8">
5 <title>School timetable</title>
6 <style>
7 html {
8 font-family: sans-serif;
9 }
10 table {
11 border-collapse: collapse;
12 border: 2px solid rgb(200,200,200);
13 letter-spacing: 1px;
14 font-size: 0.8rem;
15 }
16 td, th {
17 border: 1px solid rgb(190,190,190);
18 padding: 10px 20px;
19 }
20 td {
21 text-align: center;
22 }
23 caption {
24 padding: 10px;
25 }
26 </style>
27 </head>
28 <body>
29 <h1>School timetable</h1>
30
31 <table>
32 <colgroup>
33 <col span="2">
34 <col style="background-color:#97DB9A;">
35 <col style="width:42px;">
36 <col style="background-color:#97DB9A;">
37 <col style="background-color:#DCC48E; border:4px solid #C1437A;">
38 <col span="2" style="width:42px;">
39 </colgroup>
40 <tr>
41 <td> </td>
42 <th>Mon</th>
43 <th>Tues</th>
44 <th>Wed</th>
45 <th>Thurs</th>
46 <th>Fri</th>
47 <th>Sat</th>
48 <th>Sun</th>
49 </tr>
50 <tr>
51 <th>1st period</th>
52 <td>English</td>
53 <td> </td>
54 <td> </td>
55 <td>German</td>
56 <td>Dutch</td>
57 <td> </td>
58 <td> </td>
59 </tr>
60 <tr>
61 <th>2nd period</th>
62 <td>English</td>
63 <td>English</td>
64 <td> </td>
65 <td>German</td>
66 <td>Dutch</td>
67 <td> </td>
68 <td> </td>
69 </tr>
70 <tr>
71 <th>3rd period</th>
72 <td> </td>
73 <td>German</td>
74 <td> </td>
75 <td>German</td>
76 <td>Dutch</td>
77 <td> </td>
78 <td> </td>
79 </tr>
80 <tr>
81 <th>4th period</th>
82 <td> </td>
83 <td>English</td>
84 <td> </td>
85 <td>English</td>
86 <td>Dutch</td>
87 <td> </td>
88 <td> </td>
89 </tr>
90 </table>
91
92
93 </body>
94</html>
در نهایت جدول شما باید به صورت زیر دربیاید:
سخن پایانی
در این مقاله به بررسی مبانی مقدماتی جدولهای HTML پرداختهایم.
در مقاله بعدی در مورد برخی ویژگیهای پیشرفتهتر جدولهای HTML صحبت خواهیم کرد. همچنین در مورد راههای افزایش دسترسپذیری برای افراد دچار نقص بینایی توضیح خواهیم داد. برای مشاهده بخش بعدی این سری مطالب به لینک زیر مراجعه کنید:
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای طراحی سایت
- مجموعه آموزشهای طراحی سایت با HTML و CSS
- مجموعه آموزشهای برنامهنویسی
- آشنایی مقدماتی با HTML — به زبان ساده
- سند و ساختار وب سایت در HTML — راهنمای کاربردی
==