HTML Academy · Pelajaran

aria-selected dan Corak Tab

Laksanakan antara muka tab yang boleh diakses melalui papan kekunci

Pelajaran 2 daripada 413 langkah

aria-selected dan Corak Tab ialah pelajaran HTML Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran HTML Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus HTML Academy merangkumi sejumlah 4 pelajaran.

Gambaran keseluruhan corak tab

Antara muka tab mempunyai tiga komponen ARIA:

  • role="tablist" — bekas untuk semua tab
  • role="tab" — butang tab individu
  • role="tabpanel" — panel kandungan bagi setiap tab

Struktur tab ARIA

Penandaan tab lengkap yang boleh diakses:

<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 menunjukkan item yang sedang aktif dalam konteks pemilihan:

<!-- 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>

Corak papan kekunci tab

Corak ARIA mentakrifkan tingkah laku papan kekunci khusus untuk tab:

  • Tab — mengalihkan fokus ke dalam senarai tab, kepada tab yang dipilih
  • Kekunci anak panah — beralih antara tab
  • Tab sekali lagi — mengalihkan fokus keluar dari senarai tab ke panel aktif
  • Home — tab pertama
  • End — tab terakhir

Pelaksanaan papan kekunci tab

Navigasi papan kekunci untuk tab menggunakan kekunci anak panah:

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();
    }
  });
});

Fungsi activateTab

Fungsi untuk menukar tab dan mengemas kini 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;
}

Corak tabindex bergerak

Kumpulan tab menggunakan tabindex bergerak untuk mengekalkan satu tab dalam susunan tab:

<!-- 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 berbanding aria-checked

aria-selected berbanding aria-checked — konteks yang berbeza:

  • aria-selected — digunakan dalam widget pemilihan: tab, pilihan dalam listbox, item dalam tree
  • aria-checked — digunakan pada item yang boleh ditanda: kotak pilihan, item menu dengan tanda semak

Fokus tabpanel

Apabila tab diaktifkan, panel menjadi kelihatan tetapi fokus kekal pada tab:

// 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">

Pengaktifan automatik berbanding manual

Dua model pengaktifan tab:

  • Automatik — tab diaktifkan apabila pengguna menekan kekunci anak panah melaluinya (pengalaman pengguna lebih ringkas)
  • Manual — pengguna mesti menekan Enter/Space untuk mengaktifkan tab selepas menggunakan kekunci anak panah (lebih baik apabila kandungan tab perlu dimuatkan)

Penggayaan tab yang boleh diakses

CSS untuk keadaan tab yang dipilih dan boleh diakses:

[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;
}

Semakan pantas

Bagaimanakah navigasi papan kekunci patut berfungsi dalam senarai tab?

Imbas kembali: aria-selected dan tab

Perkara penting tentang corak tab:

  • tablist → tab (aria-selected) → tabpanel (aria-labelledby)
  • Kekunci anak panah menavigasi antara tab; Tab memasuki panel
  • Tabindex bergerak: hanya tab aktif mempunyai tabindex=0
  • aria-selected="true" pada tab aktif
  • Panel tidak aktif menggunakan atribut hidden
Percuma untuk bermula

Pelajari HTML dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
40
Pelajaran
159

Soalan Lazim

Adakah pelajaran “aria-selected dan Corak Tab” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran HTML Academy, termasuk “aria-selected dan Corak Tab”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus HTML Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “aria-selected dan Corak Tab”?

Laksanakan antara muka tab yang boleh diakses melalui papan kekunci Anda berlatih HTML Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan HTML Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran HTML Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “aria-selected dan Corak Tab” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran HTML Academy ini?

Ya. Setiap pelajaran HTML Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. aria-expanded aria-controls untuk Togol
  2. aria-selected dan Corak Tab
  3. Rantau Langsung aria-live aria-atomic aria-relevant
  4. Ujian dengan Pembaca Skrin
← Kembali ke HTML Academy