0Pricing
HTML Academy · บทเรียน

การเข้าถึงตาราง: scope, summary และ caption

เพิ่มคำบรรยายและแอตทริบิวต์ scope เพื่อรองรับโปรแกรมอ่านหน้าจอ

การเข้าถึงตาราง: scope, summary และ caption เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดการเข้าถึงตารางจึงสำคัญ

ผู้ใช้โปรแกรมอ่านหน้าจอจะนำทางตารางข้อมูลทีละเซลล์ จึงต้องมีบริบทของส่วนหัวสำหรับทุกเซลล์ข้อมูลที่อ่าน

  • หากมาร์กอัปไม่ถูกต้อง โปรแกรมอ่านหน้าจอจะอ่านเพียงค่าดิบโดยไม่มีบริบทของคอลัมน์หรือแถว
  • ตารางที่เข้าถึงได้ช่วยให้ทุกคนเข้าใจข้อมูลได้

องค์ประกอบ caption

<caption> ใช้ระบุชื่อที่มองเห็นได้ให้กับตาราง:

<table>
  <caption>Q4 2024 Product Sales by Region</caption>
  <thead>...</thead>
  <tbody>...</tbody>
</table>
<!-- caption is the first child of table -->
<!-- Screen readers announce it when entering the table -->
<!-- Helps all users understand the table's purpose at a glance -->

การจัดรูปแบบ caption

จัดรูปแบบและกำหนดตำแหน่งของ caption ด้วย CSS:

caption {
  caption-side: bottom;  /* or top (default) */
  font-style: italic;
  font-size: 0.875rem;
  color: #666;
  text-align: left;
  padding: 0.5rem 0;
}

แอตทริบิวต์ scope ของ th

แอตทริบิวต์ scope จะบอกโปรแกรมอ่านหน้าจอว่าเซลล์ส่วนหัวนั้นใช้กับเซลล์ใด:

<thead>
  <tr>
    <th scope="col">Name</th>      <!-- header for a column -->
    <th scope="col">Score</th>
    <th scope="col">Grade</th>
  </tr>
</thead>
<tbody>
  <tr>
    <th scope="row">Alice</th>    <!-- header for a row -->
    <td>95</td>
    <td>A</td>
  </tr>
</tbody>

ค่าของ scope

ค่าของแอตทริบิวต์ scope:

  • col — ส่วนหัวใช้กับเซลล์ในคอลัมน์เดียวกัน
  • row — ส่วนหัวใช้กับเซลล์ในแถวเดียวกัน
  • colgroup — ส่วนหัวใช้กับเซลล์ในกลุ่มคอลัมน์
  • rowgroup — ส่วนหัวใช้กับเซลล์ในกลุ่มแถว (tbody/thead)

scope สำหรับส่วนหัวที่ซับซ้อน

ส่วนหัวที่ขยายช่วงใช้ scope แบบ colgroup หรือ rowgroup:

<thead>
  <tr>
    <th rowspan="2" scope="col">Name</th>
    <th colspan="2" scope="colgroup">2024</th>   <!-- colgroup -->
  </tr>
  <tr>
    <th scope="col">Q1</th>
    <th scope="col">Q2</th>
  </tr>
</thead>

แอตทริบิวต์ headers ของ td

สำหรับตารางที่ซับซ้อนมาก ให้ใช้ headers เพื่อเชื่อมเซลล์กับส่วนหัวอย่างชัดเจน:

<thead>
  <tr>
    <th id="hname">Name</th>
    <th id="hq1">Q1</th>
    <th id="hq2">Q2</th>
  </tr>
</thead>
<tbody>
  <tr>
    <th id="ralice" headers="hname">Alice</th>
    <td headers="hq1 ralice">95</td>
    <td headers="hq2 ralice">88</td>
  </tr>
</tbody>

เมื่อใดควรใช้ scope เทียบกับ headers

แนวทาง:

  • ตารางง่ายที่มีส่วนหัวแถวเดียว → ใช้ scope="col" และ scope="row"
  • ส่วนหัวที่ซับซ้อนและมีการขยายช่วง → ใช้แอตทริบิวต์ headers พร้อมการอ้างอิง ID
  • WCAG 1.3.1 กำหนดให้ส่วนหัวของตารางต้องเชื่อมโยงกับเซลล์ข้อมูลด้วยวิธีที่โปรแกรมเข้าใจได้

aria-label ของ table

เมื่อไม่ต้องการให้ caption ปรากฏบนหน้าจอ ให้ใช้ aria-label:

<!-- caption with visually-hidden class -->
<table aria-label="Q4 2024 Product Sales by Region">
  ...
</table>
<!-- Or use aria-labelledby to reference a heading -->
<h2 id="table-title">Sales Data</h2>
<table aria-labelledby="table-title">...</table>

การทดสอบการเข้าถึงตาราง

วิธีตรวจสอบว่าตารางของคุณเข้าถึงได้:

  • ใช้แผง ตาราง ในโปรแกรมอ่านหน้าจอ (VoiceOver, NVDA)
  • ติดตั้งส่วนขยายเบราว์เซอร์ axe DevTools
  • เรียกใช้ pa11y CLI กับ URL ของหน้า
  • ตัวตรวจสอบมาร์กอัปของ W3C จะตรวจพบ caption ที่หายไป

แอตทริบิวต์ summary (เลิกใช้แล้ว)

แอตทริบิวต์ summary เคยใช้สำหรับโปรแกรมอ่านหน้าจอกับตารางที่ซับซ้อน แต่ปัจจุบันเลิกใช้แล้วใน HTML5:

<!-- Old HTML 4.01 — do not use: -->
<table summary="This table shows quarterly sales...">

<!-- Modern HTML5 replacement: -->
<table>
  <caption>This table shows quarterly sales...</caption>
</table>
<!-- Or: aria-describedby to a paragraph -->

รายการตรวจสอบตารางที่เข้าถึงได้

รายการตรวจสอบการเข้าถึงสำหรับตารางข้อมูล:

  • ใช้ <caption> เพื่อระบุชื่อตาราง
  • ใช้ <th> กับเซลล์ส่วนหัวทั้งหมด
  • เพิ่ม scope ให้กับองค์ประกอบ <th> ทั้งหมด
  • ใช้ <thead>, <tbody>, <tfoot> เพื่อสร้างโครงสร้าง
  • สำหรับตารางที่ซับซ้อน ให้ใช้ id + headers

ตรวจสอบความเข้าใจ

ควรใช้ค่า scope ใดกับ th ที่เป็นส่วนหัวของทั้งคอลัมน์

ทบทวน: การเข้าถึงตาราง

สิ่งสำคัญของตารางที่เข้าถึงได้:

  • <caption> — ชื่อตารางที่มองเห็นได้และโปรแกรมอ่านหน้าจอประกาศให้ทราบ
  • scope="col" — ส่วนหัวคอลัมน์
  • scope="row" — ส่วนหัวแถว
  • scope="colgroup/rowgroup" — ส่วนหัวที่ขยายช่วง
  • id + headers — สำหรับส่วนหัวหลายระดับที่ซับซ้อน
  • ทดสอบด้วย axe, pa11y หรือ VoiceOver

คำถามที่พบบ่อย

บทเรียน “การเข้าถึงตาราง: scope, summary และ caption” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเข้าถึงตาราง: scope, summary และ caption” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเข้าถึงตาราง: scope, summary และ caption”

เพิ่มคำบรรยายและแอตทริบิวต์ scope เพื่อรองรับโปรแกรมอ่านหน้าจอ คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การเข้าถึงตาราง: scope, summary และ caption” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม

ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. table, tr, td และ th
  2. โครงสร้าง thead, tbody และ tfoot
  3. colspan และ rowspan สำหรับการครอบคลุมเซลล์
  4. การเข้าถึงตาราง: scope, summary และ caption
← กลับไปที่ HTML Academy