Accessibility — HTML

Coba bayangin website kamu cuma bisa diakses orang yang bisa liat layar, denger suara, dan punya tangan lengkap. Kamu otomatis nge-block puluhan juta orang…

Coba bayangin website kamu cuma bisa diakses orang yang bisa liat layar, denger suara, dan punya tangan lengkap. Kamu otomatis nge-block puluhan juta orang Indonesia yang tunanetra, tunarungu, atau punya disabilitas motorik. Aksesibilitas web (a11y) bukan opsional fitur premium — itu kewajiban etis + bisnis. Web yang accessible = lebih banyak user yang bisa pake produk kamu, plus skor SEO Google lebih tinggi (Google reward halaman yang accessible).

💡 Aturan emas ARIA. "First rule of ARIA: don't use ARIA." Maksudnya: pake elemen HTML semantik native dulu (<button>, <nav>, <input>). ARIA cuma sebagai tambalan kalau native gak cukup. Banyak developer overthink ARIA padahal masalahnya cukup pake <button> bukan <div onclick>.

3 Prinsip Dasar A11y HTML

  1. Gunakan elemen semantik<nav>, <main>, <button> lebih baik daripada <div> untuk semua hal
  2. Selalu isi atribut alt pada gambar — screen reader membacakan teks alt
  3. Hubungkan <label> dengan <input> — penting untuk form

ARIA (Accessible Rich Internet Applications)

ARIA adalah atribut tambahan untuk meningkatkan aksesibilitas saat elemen HTML standar tidak cukup:

<div role="alert">Terjadi kesalahan!</div>
<button aria-label="Tutup menu">✕</button>
<div aria-hidden="true">Dekorasi</div>

Atribut ARIA yang Umum

Aturan penting: gunakan elemen HTML yang tepat terlebih dahulu, baru gunakan ARIA jika benar-benar diperlukan. Sebuah <button> asli selalu lebih baik daripada <div role="button">.

<title id="ariatree-t">Decision tree: kapan pakai elemen native vs ARIA.</title>Butuh elemen interaktif?YATIDAKAda elemen native?YATIDAKPAKAI native<button>, <a>, <input>ARIA + tabindexdiv role="..." + handlerdiv / spantanpa role
First rule of ARIA: don't use ARIA. Native dulu, ARIA terakhir.

🎭 Analogi sehari-hari

A11y = ramp + lift di gedung publik. Bukan "extra" yang di-add belakangan — harus didesain sejak awal. Native HTML (<button>, <a>, <input>) = pintu standar yang sudah accessible. ARIA = sticker tambahan untuk pintu non-standar — dipakai cuma saat native tidak cukup. Aturan emas: first rule of ARIA is don't use ARIA.

⚠️ Jebakan yang sering ditemui

TL;DR: A11y = bikin website bisa diakses semua user (tunanetra, tunarungu, motorik). Pakai elemen HTML semantik native dulu (<button>, <nav>, <input>) — ARIA cuma tambalan kalau native gak cukup ("first rule of ARIA: don't use ARIA"). Wajib: alt di image, <label> connect ke <input>, focusable elements bisa di-tab. Bonus: skor SEO Google naik. Audit pakai Lighthouse di Chrome DevTools.

Yang akan kamu pelajari