قابلیت های پیشرفته جداول HTML – راهنمای کاربردی


در بخش قبلی این سری مقالات به بررسی جداول HTML پرداختیم. در این بخش برخی از قابلیتهای پیشرفتهتر جداول HTML مانند کپشن، جمعبندی و گروهبندی ردیفها در عنوان جدول یا بخشهای بدنه و فوتر را بررسی میکنیم. همچنین بحث دسترس پذیری جداول HTML برای کاربران دچار نقص بینایی را بیشتر مورد بررسی قرار میدهیم. برای مطالعه بخش قبلی این مجموعه مطلب آموزشی، روی لینک زیر کلیک کنید:
پیشنیاز مطالعه این مقاله آشنایی با مبانی HTML است. انتظار میرود با مطالعه این مطلب با قابلیتهای پیشرفتهتر جداول HTML و دسترسپذیری جداول آشنا شوید.
ارائه توضیح مختصر راجع به جدول با <caption>
با قرار دادن عنصر <caption> و تعریف تودرتوی آن در عنصر <HTML> میتوان یک کپشن (توصیف کوتاه راجع به محتوای جدول) برای جدول تعریف کرد.
این عنصر باید درست پس از تگ باز <table> قرار گیرد.
چنان که از مثال کوتاه فوق مشخص است، کپشن به منظور ارائه توصیفی کوتاه از محتوای جدول ارائه میشود. این وضعیت برای همه خوانندگانی که قصد دارند ایده سریعی از فایده جدول داشته باشند، مفید خواهد بود و میتوانند به سرعت با محتوای جدول آشنا شوند. همچنین افراد نابینا نیز میتوانند از محتوای جدول آگاه شوند. به جای این که یک ابزار قرائت صفحه محتوای سلولهای مختلف را بخواند تا این افراد بتوانند در مورد جدول کسب اطلاع بکنند، میتوانند از کپشن استفاده کنند و تصمیم بگیرند که میخواهند جزییات بیشتری از راجع به آن بخوانند یا نه. مجدداً تأکید میکنیم که یک کپشن مستقیماً زیر تگ <table> قرار میگیرد.
نکته: خصوصیت summary روی عنصر <table> نیز میتواند مفید باشد و توصیفی از جدول ارائه کند. این خصوصیت نیز از سوی ابزارهای قرائت صفحه خوانده میشود، اما ما توصیه میکنیم از <caption> استفاده کنید. summary در HTML5 منسوخ شده و کاربران بینا نمیتوانند آن را بخوانند، چون روی صفحه نمایش پیدا نمیکند.
مثال کاربردی: افزودن <caption>
در این بخش به بررسی مجدد مثالی میپردازیم که در بخش قبلی این مقاله ملاحظه کردیم. جدول زمانی مدرسه معلم زبان را از کد زیر کپی کرده و روی سیستم خود در فایلی به نام timetable-fixed.html بچسبانید:
یک کپشن مناسب برای جدول درج کنید. کد را ذخیره کرده و آن را در یک مرورگر باز کنید تا تغییرات حاصل شده را مشاهده کنید.
افزودن ساختار با <thead> ،<tfoot> و <tbody>
زمانی که جدولها ساختار پیچیدهتری مییابند، بهتر است از تعاریف ساختاری بیشتری در ایجاد آنها بهره بگریم. یک روش مشخص استفاده از عناصر <thead> ،<tfoot> و <tbody> است که امکان نشانهگذاری بخشهای هدر، فوتر و بدنه جدول را فراهم میسازد.
این عناصر موجب نمیشوند که جداول دسترسپذیری بیشتری برای ابزارهای قرائت صفحه پیدا کنند و از این نظر ذاتاً ارزش چندانی برای بهبود دیداری ندارند. با این حال، برای استایلدهی و طرحبندی جداول کاملاً مفید هستند و به عنوان قلابهایی برای افزودن CSS به جدول عمل میکنند. برای این که برخی مثالهای جالب در اختیار شما قرار دهیم، باید بگوییم که وقتی جدولی بسیار طولانی میشود، میتوانید در هر بازه نمایشی از جدول یک هدر و یک فوتر قرار دهید. همچنین میتوانید بدنه جدول را در یک صفحه منفرد نمایش دهید و محتوای یکسانی را با اسکرول به سمت بالا و پایین داشته باشید.
برای استفاده از آنها به صورت زیر میتوان عمل کرد:
- عنصر <thead> باید بخشی از جدول را که هدر نام دارد در بربگیرد. این بخش به طور معمول نخستین ردیفی است که عناوین ستونها را شامل میشود، اما لزوماً همیشه چنین نیست. اگر از عنصر استفاده کنید، هدر جدول باید درست زیر آنها قرار گیرد.
- عنصر <tfoot> باید بخشی از جدول را که فوتر نام دارد در بر بگیرد. برای نمونه این بخش میتواند ردیف نهایی باشد که جمعبندی ردیفهای قبلی محسوب میشود. میتوان فوتر جدول را درست در انتهای جدول یا آن را دقیقاً زیر هدر قرار دارد. در هر حال مرورگر آن را در انتهای جدول رندر خواهند کرد.
- عنصر <tbody> باید بخشهایی از جدول را در بر بگیرد که در هدر یا فوتر جدول قرار ندرند. این بخش دقیقاً زیر هدر یا گاهی اوقات زیر فوتر قرار میگیرد و این حالت به تصمیم شما در مورد ساختاربندی جدول بستگی دارد.
نکته: <tbody> همواره و در همه جدولها وجود دارد، هرچند آن را در کد خود به صراحت نیاورده باشید. برای بررسی این موضوع یکی از مثالهای قبلی را که شامل <tbody> نیست باز کنید و به کد HTML در بخش ابزارهای توسعهدهنده مرورگر نگاه کنید. در این حالت مشاهده خواهید کرد که مرورگر این عنصر را به جای شما اضافه میکند. ممکن است کنجکاو باشید که چه لزومی برای گنجاندن این عنصر وجود دارد، دلیل آن این است که بدین ترتیب کنترل بیشتری روی ساختاربندی و استایلدهی جدول خواهید داشت.
مثال کاربردی: افزودن ساختار جدول
در این بخش عناصری جدیدی را که بررسی کردیم، در عمل مورد استفاده قرار میدهیم. قبل از هر چیز یک کپی از کدهای زیر برداشته و روی سیستم خود در فایلهایی با نامهای spending-record.html و minimal-table.css بچسبانید:
فایل spending-record.html
فایل minimal-table.css
این فایل HTML را در مرورگر باز کنید. چنان که میبینید ظاهر مناسبی دارد، اما همچنان نیاز به بهبود دارد. ردیف SUM شامل جمعبندی مقادیر صرف شده است و به نظر میرسد در مکان نامناسبی قرار گرفته است. برخی جزییات کد نیز مفقود هستند.
ردیف هدرها را در یک عنصر <thead> قرار دهید و ردیف SUM را نیز درون عنصر <tfoot> قرار دهید و بقیه کد درون عنصر <tbody> قرار میگیرد. کد را ذخیره و صفحه را رفرش کنید. در ادامه میبینید که افزودن عنصر <tfoot> موجب میشود که ردیف SUM به انتهای جدول برود. سپس خصوصیت colspan را اضافه کنید تا سلول SUM روی چهار ستون نخست گسترش یابد، بنابراین تعداد واقعی در انتهای ستون Cost ظاهر میشود.
در ادامه استایلدهی اضافی سادهای به جدول اضافه میکنیم تا ایدهای از میزان مفید بودن این عناصر برای بهکارگیری کد CSS به دست آوریم. درون بخش عنوان سند HTML یک عنصر <style> خالی میبینیم. درون این عنصر خطوط کد CSS زیر را اضافه کنید:
کد را ذخیره و صفحه را رفرش کنید و نگاهی به نتیجه بیندازید. اگر عناصر <tbody> و <tfoot> در مکان خود نباشند باید سلکتورها و قواعد پیچیدهای برای اعمال استایل ها بنویسید.
جدول تکمیلشده شما چیزی مانند زیر خواهد بود:
کد جدول فوق به صورت زیر است:
جداول تودرتو
امکان تعریف تودرتوی یک جدول درون جدول دیگر وجود دارد و به این منظور کافی است که ساختار کامل را شامل عنصر <html> تعریف کنید. البته این روش چندان توصیه نمیشود، چون موجب خواهد شد که نشانهگذاری پیچیدهتر شود و ابزارهای قرائت صفحه دسترسپذیری کمتری به جدول داشته باشند. در موارد زیادی میتوان سلول/ردیف/ستونهای بیشتری در همان جدول موجود درج کرد. با این حال در پارهای موارد برای نمونه در صورتی که بخواهید محتوا را به سادگی از منابع دیگر ایمپورت کنید، این وضعیت ناگزیر خواهد بود.
در ادامه کد نشانهگذاری یک جدول تودرتوی ساده را ملاحظه میکنید:
خروجی کد فوق چیزی مانند زیر خواهد بود:
title1 | title2 | title3 | |||
---|---|---|---|---|---|
| cell2 | cell3 | |||
cell4 | cell5 | cell6 |
جداول HTML برای کاربران دچار نقص بینایی
در این بخش شیوه استفاده از جدولهای داده را جمعبندی میکنیم. یک جدول میتواند ابزار کارآمدی باشد و دسترسی سریعی به دادهها بدهد. همچنین امکان بررسی و مقایسه مقادیر مختلف را فراهم میسازد. با صرفاً یک نگاه گذرا به جدول زیر میتوان دریافت که چند عدد حلقه در ماه آگوست اخیر در Gent فروخته شده است. برای درک این اطلاعات باید اتصال دیداری بین دادههای این و هدرهای ردیف و / یا ستونهای آن برقرار کنیم.
Clothes | Accessories | |||||
---|---|---|---|---|---|---|
Trousers | Skirts | Dresses | Bracelets | Rings | ||
Belgium | Antwerp | 56 | 22 | 43 | 72 | 23 |
Gent | 46 | 18 | 50 | 61 | 15 | |
Brussels | 51 | 27 | 38 | 69 | 28 | |
The Netherlands | Amsterdam | 89 | 34 | 69 | 85 | 38 |
Utrecht | 80 | 12 | 43 | 36 | 19 |
اما اگر شما نتوانید آن ارتباطهای دیداری را ایجاد کنید چطور؟ در این صورت چگونه میتوانید یک جدول مانند جدول فوق را بخوانید؟ افراد دچار نقص بینایی غالباً از یک ابزار قرائت صفحه استفاده میکنند که اطلاعات روی صفحه وب را برای آنها میخواند. این وضعیت زمانی که متن ساده باشد هیچ مشکلی ایجاد نمیکند، اما تفسیر یک جدول برای فرد نابینا میتواند چالشی جدی محسوب شود. در هر حال، نشانهگذاری صحیح میتواند آن ارتباطهای دیداری را با ارتباطهای برنامهنویسی شده جایگزین کند.
نکته: بر اساس آمار سازمان بهداشت جهانی در سال 2017، حدود 235 میلیون فرد در دنیا با نوعی نقص بینایی زندگی میکردهاند. در همین راستا در این بخش از مقاله تکنیکهای بیشتری معرفی میکنیم که به کمک آنها میتوانید جدولها را تا بیشترین حد ممکن دسترسپذیر کنید.
استفاده از هدرهای ردیف و ستون
ابزارهای قرائت صفحه همه هدرها را شناسایی میکنند و از آنها برای ایجاد ارتباط برنامهنویسی شده بین هدرها و سلولهایی که با آنها ارتباط دارند کمک میگیرند. ترکیب هدرهای ردیف و ستون میتواند جدول را مانند روشی که فرد بینا جدول را تفسیر میکند، ارائه دهد.
در بخش قبلی (+) این مقاله با روش درج هدر در جدول آشنا شدیم.
خصوصیت scope
مبحث جدیدی که در این مقاله بررسی میکنیم خصوصیت scope است که میتوان با استفاده از عنصر <th> به جدول اضافه کرد. این خصوصیت به ابزارهای قرائت صفحه اعلام میکند که هدر مربوط به کدام سلولها است و آیا هدری برای ردیف یا ستون خاص محسوب میشود یا نه. اگر به مثال سوابق مصارف خود بازگردیم بدین ترتیب میتوانیم بدون هیچ ابهامی هدرهای ستون را به صورت زیر تعریف کنیم:
هر ردیف یک هدر دارد که به صورت زیر تعریف میشود (در صورتی که خواسته باشیم علاوه بر هدر ستون، هدر ردیف نیز اضافه کنیم):
ابزارهای قرائت صفحه نشانهگذاریهایی که به این صورت ساختاربندی شده باشند را شناسایی میکنند و برای نمونه به کاربران خود اجازه میدهند که کل ستون یا ردیف را به صورت یکباره بخوانند.
scope دو مقدار ممکن دیگر نیز دارد که colgroup و rowgroup نام دارند. این مقادیر برای عناوینی استفاده میشوند که روی چندین ستون یا ردیف قرار میگیرند. اگر نگاهی دوباره به جدول Items Sold August 2016 در آغاز این بخش از جدول داشته باشیم، میبینیم که سلول Clothes روی سلولهای rousers ،Skirts و Dresses قرار میگیرند. همه این سلولها باید به صورت هدر <th> نشانهگذاری شوند. از این رو Clothes عنوانی است که در ابتدای جدول قرار میگیرد و سه زیرعنوان دیگر را تعریف میکند. بدین ترتیب Clothes میتواند یک خصوصیت بگیرد، در حالی که سلولهای دیگر دارای خصوصیت scope="col"هستند.
خصوصیتهای id و headers
یک جایگزین برای استفاده از خصوصیت scope استفاده از خصوصیتهای id و headers برای ایجاد ارتباط بین هدرها و سلولها است. این روش به صورت زیر مورد استفاده قرار میگیرد:
- یک id یکتا به هر عنصر <th> اضافه میشود.
- یک خصوصیت headers به هر عنصر <td> اضافه شود. هر خصوصیت headers باید شامل فهرستی از id-ها برای همه عناصر <th> باشد که به عنوان یک هدر برای سلول عمل میکنند و با فاصله از هم جدا میشوند.
- بدین ترتیب جدول HTML یک تعریف صریح از موقعیت هر سلول در جدول پیدا میکند که به وسیله هدر (های) هر ستون و ردیف که بخشی از آن هستند تعریف میشود و تا حدودی شبیه به یک «صفحه گسترده» (Spreadsheet) است. برای این که این تکنیک به درستی کار کند، جدول باید واقعاً به هر دو هدر ردیف و ستون نیاز داشته باشد.
اگر به مثال «هزینههای مصرفی» بازگردیم، دو قطعه کد قبلی را میتوان به صورت زیر بازنویسی کرد:
نکته: این روش ارتباط بسیار دقیقی بین سلولهای هدر و داده برقرار میکند، اما از نشانهگذاری بسیار زیادی استفاده شده است و هیچ پیشبینی برای خطا وجود ندارد. رویکرد scope برای اغلب جدولها کافی به نظر میرسد.
مثال کاربردی: کار کردن با scope و headers
در این تمرین نهایی ابتدا یک کپی از فایل زیر برداشته و در سیستم خود در فایلی با نام items-sold.html درج کنید.
فایل items-sold.html
همچنین کد زیر را در فایلی با نام minimal-table.css ذخیره کنید:
اکنون تلاش کنید، خصوصیت scope مناسب را اضافه کنید تا جدول به شکل صحیحتری نمایش پیدا کند. در نهایت کپی دیگری از فایلهای اولیه ایجاد کنید و این بار با استفاده از خصوصیتهای id و headers جدول را دسترسپذیر تر بسازید.
نکته: در نهایت کار خود را با دو کد زیر مقایسه کنید:
فایل کامل شده مثال هزینههای مصرفی با استفاده از scope
فایل کامل شده مثال هزینههای مصرفی با استفاده از headers
جمعبندی
چند نکته دیگر نیز وجود دارند که باید در مورد جداول HTML بدانید، اما همه موارد مهمی که تا به این جا واقعاً باید میدانستید در این مقاله ارائه کردهایم. در بخش بعدی این سری مقالات به بررسی روشهای استایلدهی جداول خواهیم پرداخت.
برای مطالعه قسمت بعدی این مجموعه مطلب آموزشی میتوانید روی لینک زیر کلیک کنید:
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای طراحی سایت با HTML و CSS
- آموزش پروژه محور HTML و CSS
- مجموعه آموزشهای برنامهنویسی
- ۸ افکت HTML برای زیباتر شدن وبسایت
- HTML و هر آنچه باید پیش از شروع یادگیری آن بدانید — راهنمای مقدماتی و کاربردی
==