เมื่อใดควรใช้ ARIA เทียบกับ HTML แบบเนทีฟ
ปฏิบัติตามกฎข้อแรกของ ARIA: เลือกใช้ความหมายแบบเนทีฟก่อน
เมื่อใดควรใช้ ARIA เทียบกับ HTML แบบเนทีฟ เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
ARIA คืออะไร
ARIA (แอปพลิเคชันอินเทอร์เน็ตแบบสมบูรณ์ที่เข้าถึงได้) คือชุดแอตทริบิวต์ที่เพิ่มลงใน HTML ได้ เพื่อปรับปรุงการเข้าถึงสำหรับเทคโนโลยีสิ่งอำนวยความสะดวก โดยช่วยเติมเต็มข้อจำกัดเมื่อความหมายของ HTML ดั้งเดิมไม่เพียงพอ
กฎข้อแรกของ ARIA
แนวทาง ARIA ที่สำคัญที่สุดคือ อย่าใช้ ARIA หาก HTML ดั้งเดิมทำสิ่งนั้นได้:
<!-- BAD: ARIA on a div -->
<div role="button" tabindex="0" onclick="submit()">Submit</div>
<!-- GOOD: use a real button -->
<button type="submit">Submit</button>
<!-- Native HTML elements:
- Are keyboard accessible by default
- Have correct semantics built in
- Work in more contexts
- Require less code
-->เมื่อ HTML ดั้งเดิมไม่เพียงพอ
จำเป็นต้องใช้ ARIA เมื่อ:
- คอมโพเนนต์ส่วนติดต่อผู้ใช้แบบกำหนดเองไม่มีองค์ประกอบ HTML ที่เทียบเท่า (แท็บ, กล่องเลือกแบบผสม)
- จำเป็นต้องเปลี่ยนบทบาทขององค์ประกอบดั้งเดิม
- จำเป็นต้องประกาศการอัปเดตเนื้อหาแบบไดนามิก
- จำเป็นต้องระบุความสัมพันธ์ที่ซับซ้อนระหว่างองค์ประกอบต่าง ๆ อย่างชัดเจน
ARIA ไม่เพิ่มพฤติกรรม
ความเข้าใจผิดที่สำคัญ: ARIA เพิ่มข้อมูลเมตาด้านการเข้าถึงเท่านั้น — ไม่ได้เพิ่มการทำงาน:
<!-- Adding role="button" to a div does NOT:
- Make it keyboard-focusable (add tabindex="0")
- Make Enter/Space activate it (add event listeners)
- Make it styled like a button (add CSS)
-->
<!-- You must implement ALL behavior yourself -->
<!-- Native <button> handles all this for free -->หมวดหมู่ของ ARIA
แอตทริบิวต์ของ ARIA แบ่งเป็นสามหมวดหมู่:
- บทบาท — กำหนดว่าองค์ประกอบคืออะไร:
role="button",role="dialog" - คุณสมบัติ — อธิบายลักษณะคงที่:
aria-label,aria-required - สถานะ — อธิบายเงื่อนไขแบบไดนามิก:
aria-expanded,aria-checked
HTML เชิงความหมายเทียบกับสิ่งเทียบเท่าใน ARIA
องค์ประกอบ HTML ส่วนใหญ่มีบทบาท ARIA โดยนัยอยู่แล้ว:
<nav> ≡ role="navigation"
<main> ≡ role="main"
<aside> ≡ role="complementary"
<header> ≡ role="banner" (page-level)
<footer> ≡ role="contentinfo" (page-level)
<button> ≡ role="button"
<a href> ≡ role="link"
<h1-h6> ≡ role="heading"
<ul> ≡ role="list"การใช้ ARIA ที่ถูกต้องทั่วไป
ตัวอย่างการใช้ ARIA ที่ถูกต้อง:
<!-- 1. Custom dropdown (no native equivalent): -->
<div role="combobox" aria-expanded="false">...</div>
<!-- 2. Loading state announcement: -->
<div role="status" aria-live="polite">Loading results...</div>
<!-- 3. Override landmark label: -->
<nav aria-label="Primary navigation">...</nav>
<!-- 4. Associate error with input: -->
<input aria-describedby="error-msg">
<span id="error-msg" role="alert">Invalid email</span>การใช้ ARIA ที่ไม่ถูกต้อง
ข้อผิดพลาดทั่วไปในการใช้ ARIA:
<!-- BAD: ARIA role contradicts the element -->
<h2 role="button">Heading</h2> <!-- don't turn a heading into a button -->
<!-- BAD: ARIA on an unsupported element -->
<div role="listitem">Item</div> <!-- listitem must be inside list role -->
<!-- BAD: ARIA where HTML works fine -->
<p role="paragraph">Text</p> <!-- p already has paragraph semantics -->
<!-- BAD: aria-label on hidden element -->
<span aria-hidden="true" aria-label="something"> <!-- contradictory -->บทบาทจุดสังเกต
บทบาทจุดสังเกตของ ARIA ช่วยให้ผู้ใช้โปรแกรมอ่านหน้าจอนำทางไปยังภูมิภาคต่าง ๆ ของหน้า:
<div role="banner"> <!-- header for the whole page -->
<div role="navigation"> <!-- major navigation -->
<div role="main"> <!-- main content -->
<div role="complementary"> <!-- aside content -->
<div role="contentinfo"> <!-- page footer -->
<div role="search"> <!-- search form -->
<div role="form"> <!-- form with label -->
<!-- These are ONLY needed if using divs instead of semantic elements -->
<!-- Prefer the native HTML elements instead -->การทดสอบการนำ ARIA ไปใช้
วิธีตรวจสอบว่า ARIA ของคุณถูกต้อง:
- ใช้แผงการเข้าถึงใน Chrome/Firefox DevTools
- ฟังด้วย VoiceOver (Mac) หรือ NVDA (Windows)
- เรียกใช้ส่วนขยาย axe DevTools
- ตรวจสอบโครงสร้างการเข้าถึง — สะท้อนสิ่งที่คุณคาดหวังหรือไม่
ข้อควรระวังเรื่อง aria-hidden
ข้อผิดพลาดทั่วไปเกี่ยวกับ aria-hidden:
<!-- BAD: aria-hidden on element that still receives focus -->
<button aria-hidden="true">Close</button>
<!-- The button is still focusable but invisible to screen readers
Screen reader users reach it via Tab but hear nothing -->
<!-- GOOD: for focus + hide, use hidden attribute or display:none: -->
<button hidden>Close</button> <!-- removes from both tab order and AT -->
<!-- Or: if you must keep visible: -->
<button style="display:none" aria-hidden="true">Close</button>ตรวจสอบอย่างรวดเร็ว
การเพิ่ม role="button" ให้ div จะทำให้เกิดอะไรขึ้นโดยอัตโนมัติ
สรุป: ARIA เทียบกับ HTML ดั้งเดิม
สิ่งสำคัญเกี่ยวกับ ARIA:
- กฎข้อแรก: ใช้ HTML ดั้งเดิมเมื่อทำได้
- ARIA เพิ่มเฉพาะความหมาย — คุณต้องเขียนพฤติกรรมเอง
- สามหมวดหมู่: บทบาท, คุณสมบัติ, สถานะ
- บทบาทจุดสังเกตช่วยในการนำทางด้วยโปรแกรมอ่านหน้าจอ
- ทดสอบด้วยแผงการเข้าถึงใน DevTools และโปรแกรมอ่านหน้าจอ
คำถามที่พบบ่อย
บทเรียน “เมื่อใดควรใช้ ARIA เทียบกับ HTML แบบเนทีฟ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เมื่อใดควรใช้ ARIA เทียบกับ HTML แบบเนทีฟ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เมื่อใดควรใช้ ARIA เทียบกับ HTML แบบเนทีฟ”
ปฏิบัติตามกฎข้อแรกของ ARIA: เลือกใช้ความหมายแบบเนทีฟก่อน คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “เมื่อใดควรใช้ ARIA เทียบกับ HTML แบบเนทีฟ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม
ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เมื่อใดควรใช้ ARIA เทียบกับ HTML แบบเนทีฟ
- role button alert dialog และ landmark
- aria-label aria-labelledby และ aria-describedby
- aria-hidden และ aria-live