การเข้าถึงตาราง: 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
- เรียกใช้
pa11yCLI กับ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- table, tr, td และ th
- โครงสร้าง thead, tbody และ tfoot
- colspan และ rowspan สำหรับการครอบคลุมเซลล์
- การเข้าถึงตาราง: scope, summary และ caption