Dengan menggunakan elemen HTML semantik yang tepat, Anda mungkin dapat memenuhi sebagian besar atau semua
kebutuhan akses keyboard Anda. Ini berarti lebih sedikit waktu untuk bermain-main dengan tabindex
,
dan lebih banyak pengguna yang puas!
Dukungan keyboard secara gratis (dan pengalaman seluler yang lebih baik)
Ada sejumlah elemen interaktif bawaan dengan semantik dan dukungan keyboard yang tepat. Aplikasi yang paling sering digunakan developer adalah:
Selain itu, elemen dengan atribut
contenteditable
terkadang digunakan untuk entri teks bentuk bebas.
Sangat mudah untuk mengabaikan dukungan {i>keyboard<i} bawaan yang ditawarkan elemen-elemen ini.
Berikut adalah beberapa contoh elemen untuk dieksplorasi. Daripada menggunakan
mouse, coba gunakan keyboard untuk mengoperasikannya. Anda dapat menggunakan TAB
(atau SHIFT +
TAB
) untuk berpindah antar-kontrol, dan Anda dapat menggunakan tombol panah dan tombol seperti
ENTER
dan SPACE
untuk memanipulasi nilainya.
Jika Anda memiliki ponsel, Anda dapat melihat bahwa berkali-kali elemen bawaan ini memiliki interaksi unik di perangkat seluler. Mencoba mereproduksi interaksi seluler ini sendiri membutuhkan banyak pekerjaan! Ini adalah alasan bagus lainnya untuk tetap berpegang pada elemen {i>built-in<i} bila memungkinkan.
Gunakan button
, bukan div
Antipola aksesibilitas umum adalah dengan memperlakukan elemen non-interaktif, seperti
div
atau span
, sebagai tombol dengan menambahkan pengendali klik ke elemen tersebut.
Tetapi agar dianggap dapat diakses, tombol harus:
- Dapat difokuskan melalui keyboard
- Dukungan dinonaktifkan
- Dukung tombol
ENTER
atauSPACE
untuk menjalankan tindakan - Dibacakan dengan benar oleh pembaca layar
Tombol div
tidak memiliki semua hal tersebut. Artinya, Anda harus menulis
kode tambahan untuk mereplikasi elemen button
yang diberikan secara gratis.
Misalnya, elemen button
memiliki trik menarik yang disebut *aktivasi klik
sintetik*. Jika Anda menambahkan pengendali "klik" ke button
, pengendali akan berjalan saat
pengguna menekan ENTER
atau SPACE
. Tombol div
tidak memiliki fitur ini, sehingga
Anda harus menulis kode tambahan untuk memproses peristiwa keydown
, memeriksa
apakah kode tombolnya adalah ENTER
atau SPACE
, lalu jalankan pengendali klik Anda. Aduh!
Itu merepotkan!
Bandingkan perbedaan dalam contoh ini. TAB
untuk mengontrolnya, serta gunakan ENTER
dan SPACE
untuk mencoba mengkliknya.
Jika Anda memiliki tombol div
di situs atau aplikasi yang sudah ada, pertimbangkan
untuk menukarnya dengan elemen button
. button
mudah ditata dan penuh dengan
aksesibilitas yang memuaskan!
Link versus tombol
Antipola umum lainnya adalah memperlakukan link sebagai tombol dengan melampirkan perilaku JavaScript ke link tersebut.
<a href="#" onclick="// perform some action">
Tombol dan link mendukung beberapa bentuk aktivasi klik sintetis. Jadi, mana yang harus Anda pilih?
- Jika mengklik elemen akan menjalankan tindakan pada halaman, gunakan
<button>
. - Jika mengklik elemen akan mengarahkan pengguna ke halaman baru, gunakan
<a>
. Metode ini mencakup aplikasi web satu halaman yang memuat konten baru dan memperbarui URL menggunakan History API.
Alasannya adalah tombol dan link dibacakan secara berbeda oleh pembaca layar. Menggunakan elemen yang benar akan membantu pengguna pembaca layar mengetahui hasil yang diharapkan.
TODO: DevSite - Pikirkan dan Periksa penilaian
Gaya visual
Beberapa elemen bawaan, khususnya <input>
, dapat sulit untuk ditata gayanya.
Dengan sedikit CSS yang cerdas, Anda mungkin dapat mengatasi beberapa keterbatasan ini. Project WTFForms (dinamai dengan lucu)
berisi contoh
stylesheet
yang menunjukkan sejumlah teknik untuk menata gaya beberapa elemen
bawaan yang lebih sulit.
Langkah berikutnya
Penggunaan elemen HTML bawaan dapat sangat meningkatkan aksesibilitas situs Anda, dan mengurangi beban kerja Anda secara signifikan. Coba jelajahi situs Anda dengan {i>tab<i} dan cari kontrol yang tidak memiliki dukungan {i>keyboard<i}. Jika memungkinkan, ganti untuk alternatif HTML standar.
Terkadang Anda mungkin menemukan elemen yang tidak memiliki padanan di HTML.
Tidak apa-apa. Baca selengkapnya untuk mempelajari cara menambahkan dukungan keyboard ke kontrol interaktif kustom
menggunakan tabindex
.