aria-selected dan Pola Tab
Implementasikan antarmuka tab yang dapat diakses melalui papan ketik.
aria-selected dan Pola Tab adalah pelajaran HTML Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar HTML Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus HTML Academy mencakup 4 pelajaran total.
Ikhtisar Pola Tab
Antarmuka tab memiliki tiga komponen ARIA:
role="tablist"— container untuk semua tabsrole="tab"— tombol tab individualrole="tabpanel"— panel konten untuk setiap tab
Struktur Tab ARIA
Markup tab aksesibel yang lengkap:
<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>Pola Keyboard Tab
Pola ARIA menetapkan perilaku keyboard tertentu untuk tab:
- Tab — memindahkan focus ke dalam tablist, menuju tab yang dipilih
- Tombol panah — berpindah secara berurutan di antara tab
- Tab lagi — memindahkan focus keluar dari tablist ke panel aktif
- Home — tab pertama
- End — tab terakhir
Implementasi Keyboard Tab
Navigasi keyboard untuk tab menggunakan tombol 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 mengganti tab dan memperbarui 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;
}Pola tabindex Berpindah
Kelompok tab menggunakan tabindex berpindah agar hanya satu tab berada dalam urutan 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 vs aria-checked
aria-selected vs aria-checked — digunakan dalam konteks yang berbeda:
aria-selected— digunakan pada widget pemilihan: tab, opsi dalam listbox, item dalam treearia-checked— digunakan pada item yang dapat dicentang: kotak centang, item menu dengan tanda centang
Focus Tabpanel
Saat sebuah tab diaktifkan, panel menjadi terlihat tetapi focus tetap berada 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">Aktivasi Otomatis vs Manual
Dua model aktivasi tab:
- Otomatis — tab diaktifkan saat pengguna berpindah menggunakkan tombol panah (pengalaman pengguna lebih sederhana)
- Manual — pengguna harus menekan Enter/Spasi untuk mengaktifkan setelah berpindah dengan tombol panah (lebih baik jika konten tab memerlukan pemuatan)
Penataan Tab yang Aksesibel
CSS untuk status tab yang dipilih dan aksesibel:
[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;
}Pemeriksaan Singkat
Bagaimana seharusnya navigasi keyboard bekerja di dalam daftar tab?
Ringkasan: aria-selected dan Tabs
Hal-hal penting dalam pola tab:
- tablist → tab (aria-selected) → tabpanel (aria-labelledby)
- Tombol panah menavigasi di antara tab; Tab memasuki panel
- Tabindex berpindah: hanya tab aktif yang memiliki tabindex=0
- aria-selected="true" pada tab aktif
- Panel yang tidak aktif menggunakan atribut hidden
Pertanyaan yang Sering Diajukan
Apakah pelajaran “aria-selected dan Pola Tab” gratis?
Ya — teks lengkap “aria-selected dan Pola Tab” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus HTML Academy, upgrade ke CoddyKit PRO. Kursus HTML Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “aria-selected dan Pola Tab”?
Implementasikan antarmuka tab yang dapat diakses melalui papan ketik. Kamu berlatih HTML Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai HTML Academy?
Tidak diperlukan pengalaman sebelumnya. HTML Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “aria-selected dan Pola Tab” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran HTML Academy ini?
Ya. Setiap pelajaran HTML Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- aria-expanded aria-controls untuk Sakelar
- aria-selected dan Pola Tab
- Region Langsung aria-live aria-atomic aria-relevant
- Pengujian dengan Pembaca Layar