0Pricing
HTML Academy · Pelajaran

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 tabs
  • role="tab" — tombol tab individual
  • role="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 tree
  • aria-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

  1. aria-expanded aria-controls untuk Sakelar
  2. aria-selected dan Pola Tab
  3. Region Langsung aria-live aria-atomic aria-relevant
  4. Pengujian dengan Pembaca Layar
← Kembali ke HTML Academy