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

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 และรายการใน tree
  • aria-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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. aria-expanded และ aria-controls สำหรับตัวสลับ
  2. aria-selected และรูปแบบแท็บ
  3. ภูมิภาคแบบไลฟ์: aria-live aria-atomic aria-relevant
  4. การทดสอบด้วยโปรแกรมอ่านหน้าจอ
← กลับไปที่ HTML Academy