Structure > html
این متن هنوز کامل نیست و در حال بروزرسانی است. نسخه‌ی نهایی پس از تکمیل در دسترس قرار خواهد گرفت.

نمایش داده‌ها با جدول

در عصر داده‌های بزرگ و تحلیل‌های عمیق نمایش هوشمندانه، معنایی و دسترسی‌پذیر داده‌ها در قالب جداول یکی از مهم‌ترین اصول توسعه وب مدرن مطرح می‌شود. این فصل به بررسی جامع و تخصصی ساختار کامل جداول HTML5 می‌پردازد شامل استفاده از عناصر معنایی، مدیریت سلول‌های مرکب، بهبود دسترسی‌پذیری، و تکنیک‌های واکنش‌گرایی برای سازگاری با تمام دستگاه‌ها. هدف این فصل ایجاد جداول معتبر، خوانا، قابل تحلیل توسط ابزارهای دسترسی و سازگار با محیط‌های مختلف است.

8.1 ساختار کامل جداول HTML: از بنیان تا ساختار معنایی

8.1.1<table> : عنصر اصلی جدول

<table>
 <caption>جدول عملکرد کارمندان در سال ۱۴۰۳</caption>
 <!-- ساختار جدول -->
</table>

8.1.2 ساختارهای داخلی جدول: سلسله‌مراتب معنایی

<thead> بخش سرستون‌ها (Headings) – معمولاً شامل <tr> و <th>
<tbody> بخش محتوای اصلی جدول – مجموعه سطرهای داده‌ای
<tfoot> بخش پاورقی جدول – مثلاً مجموع، متوسط یا یادداشت‌های نهایی
<colgroup> گروه‌بندی ستون‌ها برای تنظیم استایل یکجا
<col> تعریف ویژگی‌های ستون (مثلاًspan - width )
<table aria-label="فهرست افراد">
<thead>
 <tr>
  <th>نام</th>
  <th>نام خانوادگی</th>
 </tr>
</thead>
<tbody>
 <tr>
  <td>علی</td>
  <td>رضایی</td>
 </tr>
 <tr>
  <td>نگار</td>
  <td>کریمی</td>
 </tr>
 <tr>
  <td>امیر</td>
  <td>صادقی</td>
 </tr>
</tbody>
</table>

8.1.3 <tr> - <th> - <td>: سلول‌های جدول

<th> برای سرستون‌ها استفاده می‌شود و به صورت پیش‌فرض فشرده (bold) نمایش داده می‌شود. <td> فقط برای داده‌های معمولی است.

8.2 ترکیب سلول‌ها در جدول: مدیریت داده‌های پیچیده

8.2.1 colspan و rowspan: ادغام سلول‌ها

<tr>
 <th rowspan="2" scope="row">فریم‌ورک</th>
 <th colspan="2" scope="col">عملکرد</th>
</tr>
<tr>
 <th scope="col">متوسط</th>
 <th scope="col">بهینه‌سازی</th>
</tr>
اگر سلول‌ها ادغام شده باشند باید از headers یا aria-labelledby برای ارجاع به سلول‌های اصلی استفاده کنید. ادغام سلول‌ها باید به صورت منطقی و بدون سوءاستفاده انجام شود.

8.3 جداول دسترس‌پذیر و معنایی‌تر: از ساختار به اعتماد

8.3.1 scope و headers: تعیین روابط سلول‌ها

<table>
<thead>
 <tr>
  <th id="name">نام</th>
  <th id="score">امتیاز</th>
  <th id="status">وضعیت</th>
 </tr>
</thead>
<tbody>
 <tr>
  <th id="ali" scope="row">علی</th>
  <td headers="ali score">95</td>
  <td headers="ali status">موفق</td>
 </tr>
</tbody>
</table>
Screen Readers از headers برای خواندن داده‌ها به صورت "نام: علی، امتیاز: 95، وضعیت: موفق" استفاده می‌کنند. استفاده از scope برای سرستون‌ها، به طور خودکار روابط را تعیین می‌کند.

8.3.2 summary (منسوخ‌شده) و جایگزینی با aria-describedby

<table aria-describedby="table-desc">
 <caption>جدول عملکرد کارمندان</caption>
  <p id="table-desc">این جدول شامل اطلاعات عملکرد کارمندان در سال ۱۴۰۳ است.</p>
  <!-- ساختار جدول -->
</table>
aria-describedby به ابزارهای دسترسی کمک می‌کند تا توضیحات جدول را به کاربر نمایش دهند. این روش بهتر از summary است زیرا در ساختار معنایی HTML5 قرار دارد و قابلیت‌های جدید دارد.

8.4 تکنیک‌های واکنش‌گرایی در جداول: سازگاری با دستگاه‌های مختلف

8.4.1 اسکرول افقی (Horizontal Scrolling)

برای جداول بزرگ با ستون‌های متعدد، اسکرول افقی گزینه‌ای مناسب است.
<div class="scrollable-table">
 <table>
  <!-- ساختار جدول -->
 </table>
</div>
  
<style>
 .scrollable-table {
 overflow-x: auto;
 white-space: nowrap;
 border: 1px solid #ccc;
}
</style>
استفاده از white-space: nowrap از شکسته شدن سلول‌ها جلوگیری می‌کند. از overflow-x: auto برای اسکرول افقی استفاده کنید.

8.4.2 ساختار کارت‌گونه (Card-based Layout)

<div class="card-table">
 <div class="card">
  <div class="label">نام:</div>
  <div class="value">علی</div>
 </div>
 <div class="card">
  <div class="label">امتیاز:</div>
  <div class="value">95</div>
 </div>
  <div class="card">
   <div class="label">وضعیت:</div>
   <div class="value">موفق</div>
  </div>
</div>
از @media برای تغییر ساختار در موبایل استفاده کنید. این روش به شدت به دسترسی‌پذیری و UX کمک می‌کند.

8.4.3 تغییر چینش (Responsive Reordering)

با CSS Grid و Flexbox، می‌توان سلول‌ها را به صورت واکنش‌گرا تغییر داد.
<style>
 .card-table {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  }
    
 @media (min-width: 768px) {
  .card-table {
   grid-template-columns: 1fr 1fr;
   }
  }
    </style>
در موبایل سلول‌ها یکی در زیر دیگر قرار می‌گیرند و در دسکتاپ دو ستونه نمایش داده می‌شوند.
یک جدول موفق فقط با زیبایی ظاهری نیست بلکه با ساختار معنایی منظم، مدیریت دسترسی‌پذیری، و واکنش‌گرایی هوشمندانه ساخته می‌شود. این فصل پایه‌ای برای نوشتن محتوای داده‌محور معتبر، دسترسی‌پذیر و متناسب با استانداردهای جهانی است.



بعدی قبلی