Episode ini membedah aksesibilitas konten dasar: prinsip WCAG, atribut ARIA seperti aria-label dan aria-live, fokus keyboard dan tabindex, serta cara menguji dengan screen reader.

Aksesibilitas web berarti memastikan konten bisa dipakai oleh semua orang — termasuk pengguna yang tidak memakai mouse, yang buta, atau yang memiliki gangguan motorik. Episode 10 membahas aksesibilitas konten dasar: prinsip yang mengaturnya, atribut ARIA yang paling sering dipakai, fokus keyboard, dan cara mengujinya.
ARIA (Accessible Rich Internet Applications) adalah kumpulan atribut yang melengkapi makna HTML untuk alat bantu. Namun aturan pentingnya: gunakan elemen HTML asli dulu — ARIA hanya pelengkap, bukan pengganti struktur yang benar.
Standar WCAG (Web Content Accessibility Guidelines) merangkum aksesibilitas dalam empat prinsip:
Keempat pilar ini menjadi lensa untuk menilai setiap keputusan markup. Contoh nyata: gambar tanpa alt melanggar prinsip perceivable; menu yang hanya bisa diklik mouse melanggar operable.
aria-label memberi nama aksesibel pada elemen yang tidak punya teks terlihat:
<button type="button" aria-label="Tutup dialog">x</button>Tombol berisi huruf x di atas tidak punya teks bermakna. aria-label="Tutup dialog" memberi tahu screen reader apa yang dilakukan tombol — sementara tampilan visual tetap bersih.
aria-labelledby menghubungkan elemen dengan teks yang sudah ada di halaman:
<h2 id="judul-panel">Pengaturan</h2>
<div aria-labelledby="judul-panel">...</div>Gunakan aria-labelledby ketika sudah ada teks terlihat yang bisa dipakai sebagai nama. aria-label dipakai ketika tidak ada teks terlihat sama sekali.
aria-live memberi tahu screen reader bahwa konten berubah tanpa fokus berpindah:
<p id="notifikasi" aria-live="polite"></p>Dengan aria-live="polite", perubahan teks di dalamnya diumumkan setelah aktivitas pengguna selesai. Pola ini wajib untuk pemberitahuan yang muncul dari JavaScript — misalnya "Data berhasil disimpan".
Sebagian pengguna tidak memakai mouse — mereka berpindah elemen dengan tombol Tab. Browser menyediakan fokus bawaan untuk tautan, tombol, dan kontrol form. Jangan pernah menghapus kemampuan ini.
tabindex mengatur urutan dan kemampuan fokus:
tabindex="0": elemen bisa difokuskan mengikuti urutan dokumen.tabindex="-1": elemen bisa difokuskan lewat JavaScript, tapi bukan urutan tab.<div tabindex="0" role="button" aria-label="Buka menu">Menu</div>Contoh di atas menjadikan div bisa difokuskan dan dibaca sebagai tombol. Idealnya pakai button asli — tapi jika terpaksa memakai div, atribut-atribut ini wajib hadir.
Selain fokus, pastikan kontras teks terhadap latar cukup tinggi (minimum 4.5 banding 1 untuk teks biasa) dan target klik tidak terlalu kecil. Aturan target sentuh akan kita bahas lagi di episode 21.
Langkah pengujian paling mendasar: navigasi dengan keyboard saja. Buka halaman, tekan Tab berulang kali, dan pastikan urutan fokus masuk akal serta ada penanda fokus yang terlihat.
Untuk pengujian lanjutan:
npx lighthouse http://localhost:8080 --only-categories=accessibilityPerintah npx lighthouse http://localhost:8080 --only-categories=accessibility menghasilkan laporan skor aksesibilitas lengkap dengan daftar perbaikan. Jalankan setelah server lokal berjalan.
Atribut ARIA tidak memperbaiki struktur yang salah. Tombol yang ditulis sebagai div tetap bukan button untuk semua perilaku. Perbaiki elemennya dulu, baru tambahkan ARIA jika benar-benar perlu.
aria-hidden="true" menyembunyikan elemen dari alat bantu. Jangan pasang pada elemen yang mengandung fokus atau konten penting — pengguna kehilangan akses ke elemen tersebut.
Episode 10 memberi kalian dasar aksesibilitas: empat prinsip WCAG, atribut ARIA yang paling sering dipakai, manajemen fokus keyboard, dan cara menguji dengan alat otomatis serta screen reader.
Inti yang harus dibawa pulang:
aria-label untuk elemen tanpa teks; aria-labelledby untuk teks yang sudah ada.aria-live untuk mengumumkan pembaruan konten.tabindex dipakai dengan hati-hati.Di episode 11 selanjutnya kita akan membahas elemen media tambahan — audio, video, picture, dan source — untuk menyisipkan media yang kaya dengan fallback format yang benar.