aria-selected และรูปแบบแท็บ
ใช้งานอินเทอร์เฟซแท็บที่เข้าถึงได้ด้วยแป้นพิมพ์
aria-selected และรูปแบบแท็บ เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
ภาพรวมรูปแบบแท็บ
อินเทอร์เฟซแท็บมีองค์ประกอบ ARIA สามส่วน:
role="tablist"— container สำหรับแท็บทั้งหมดrole="tab"— ปุ่มแท็บแต่ละปุ่มrole="tabpanel"— แผงเนื้อหาของแท็บแต่ละแท็บ
โครงสร้างแท็บ ARIA
มาร์กอัปแท็บที่เข้าถึงได้อย่างสมบูรณ์:
<div role="tablist" aria-label="Account Settings">
<button role="tab" id="tab-1" aria-selected="true"
aria-controls="panel-1">Profile</button>
<button role="tab" id="tab-2" aria-selected="false"
aria-controls="panel-2" tabindex="-1">Security</button>
<button role="tab" id="tab-3" aria-selected="false"
aria-controls="panel-3" tabindex="-1">Notifications</button>
</div>
<div id="panel-1" role="tabpanel" aria-labelledby="tab-1">
Profile content...
</div>
<div id="panel-2" role="tabpanel" aria-labelledby="tab-2" hidden>
Security content...
</div>แอตทริบิวต์ aria-selected
aria-selected ระบุรายการที่กำลังทำงานอยู่ในบริบทที่มีการเลือก:
<!-- In a tablist: -->
<button role="tab" aria-selected="true">Active Tab</button>
<button role="tab" aria-selected="false">Other Tab</button>
<!-- In a listbox: -->
<ul role="listbox">
<li role="option" aria-selected="false">Option 1</li>
<li role="option" aria-selected="true">Option 2</li>
</ul>รูปแบบแป้นพิมพ์สำหรับแท็บ
รูปแบบ ARIA กำหนดพฤติกรรมแป้นพิมพ์เฉพาะสำหรับแท็บ:
- Tab — ย้ายโฟกัสเข้า tablist ไปยังแท็บที่เลือก
- ปุ่มลูกศร — เลื่อนไปมาระหว่างแท็บ
- Tab อีกครั้ง — ย้ายโฟกัสออกจาก tablist ไปยังแผงที่ทำงานอยู่
- Home — แท็บแรก
- End — แท็บสุดท้าย
การนำทางแป้นพิมพ์สำหรับแท็บ
การนำทางแท็บด้วยแป้นพิมพ์โดยใช้ปุ่มลูกศร:
const tabs = document.querySelectorAll('[role="tab"]');
tabs.forEach((tab, i) => {
tab.addEventListener('keydown', (e) => {
let target;
if (e.key === 'ArrowRight') target = tabs[(i + 1) % tabs.length];
if (e.key === 'ArrowLeft') target = tabs[(i - 1 + tabs.length) % tabs.length];
if (e.key === 'Home') target = tabs[0];
if (e.key === 'End') target = tabs[tabs.length - 1];
if (target) {
activateTab(target);
target.focus();
}
});
});ฟังก์ชัน activateTab
ฟังก์ชันสำหรับสลับแท็บและอัปเดต ARIA:
function activateTab(selectedTab) {
// Deactivate all tabs:
document.querySelectorAll('[role="tab"]').forEach(tab => {
tab.setAttribute('aria-selected', 'false');
tab.setAttribute('tabindex', '-1');
document.getElementById(tab.getAttribute('aria-controls')).hidden = true;
});
// Activate selected tab:
selectedTab.setAttribute('aria-selected', 'true');
selectedTab.setAttribute('tabindex', '0');
document.getElementById(selectedTab.getAttribute('aria-controls')).hidden = false;
}รูปแบบ Roving tabindex
กลุ่มแท็บใช้ roving tabindex เพื่อให้มีแท็บหนึ่งแท็บอยู่ในลำดับแท็บ:
<!-- Only the selected tab has tabindex=0 -->
<button role="tab" aria-selected="true" tabindex="0">Active</button>
<button role="tab" aria-selected="false" tabindex="-1">Other</button>
<button role="tab" aria-selected="false" tabindex="-1">Another</button>
<!-- When user arrows to a new tab:
1. Set new tab tabindex=0
2. Set old tab tabindex=-1
3. Focus new tab -->aria-selected เทียบกับ aria-checked
aria-selected เทียบกับ aria-checked — ใช้ในบริบทที่แตกต่างกัน:
aria-selected— ใช้ในวิดเจ็ตสำหรับการเลือก เช่น แท็บ ตัวเลือกใน listbox และรายการใน treearia-checked— ใช้กับรายการที่ตรวจเลือกได้ เช่น ช่องทำเครื่องหมายและรายการเมนูที่มีเครื่องหมายถูก
โฟกัสของ Tabpanel
เมื่อเปิดใช้งานแท็บ แผงจะปรากฏขึ้น แต่โฟกัสยังคงอยู่ที่แท็บ:
// Users can then Tab to move into the panel content
// The panel should not automatically receive focus
// Exception: if the panel is very long, consider moving focus
// to the panel heading for long-form content tabs
// Panel should have tabindex=-1 for programmatic focus:
<div id="panel-1" role="tabpanel" aria-labelledby="tab-1" tabindex="-1">การเปิดใช้งานอัตโนมัติกับการเปิดใช้งานด้วยตนเอง
รูปแบบการเปิดใช้งานแท็บมีสองแบบ:
- อัตโนมัติ — แท็บจะเปิดใช้งานขณะที่ผู้ใช้เลื่อนผ่านด้วยปุ่มลูกศร (ประสบการณ์ผู้ใช้ที่เรียบง่ายกว่า)
- ด้วยตนเอง — ผู้ใช้ต้องกด Enter/Space เพื่อเปิดใช้งานหลังจากเลื่อนด้วยปุ่มลูกศร (เหมาะกว่าเมื่อเนื้อหาแท็บต้องโหลด)
การจัดรูปแบบแท็บที่เข้าถึงได้
CSS สำหรับสถานะที่เลือกของแท็บที่เข้าถึงได้:
[role="tab"] {
border-bottom: 3px solid transparent;
padding: 0.75rem 1rem;
cursor: pointer;
}
[role="tab"][aria-selected="true"] {
border-bottom-color: #0070f3;
font-weight: bold;
}
/* :focus-visible for keyboard users: */
[role="tab"]:focus-visible {
outline: 2px solid #0070f3;
outline-offset: -2px;
}ตรวจสอบความเข้าใจอย่างรวดเร็ว
การนำทางด้วยแป้นพิมพ์ภายในรายการแท็บควรทำงานอย่างไร
สรุป: aria-selected และแท็บ
สาระสำคัญของรูปแบบแท็บ:
- tablist → tab (aria-selected) → tabpanel (aria-labelledby)
- ใช้ปุ่มลูกศรนำทางระหว่างแท็บ และใช้ Tab เพื่อเข้าสู่แผง
- Roving tabindex: เฉพาะแท็บที่ทำงานอยู่เท่านั้นที่มี tabindex=0
- แท็บที่ทำงานอยู่มี aria-selected="true"
- แผงที่ไม่ได้ทำงานใช้แอตทริบิวต์ hidden
คำถามที่พบบ่อย
บทเรียน “aria-selected และรูปแบบแท็บ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “aria-selected และรูปแบบแท็บ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “aria-selected และรูปแบบแท็บ”
ใช้งานอินเทอร์เฟซแท็บที่เข้าถึงได้ด้วยแป้นพิมพ์ คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “aria-selected และรูปแบบแท็บ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม
ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- aria-expanded และ aria-controls สำหรับตัวสลับ
- aria-selected และรูปแบบแท็บ
- ภูมิภาคแบบไลฟ์: aria-live aria-atomic aria-relevant
- การทดสอบด้วยโปรแกรมอ่านหน้าจอ