Kolom isian yang tidak bernama adalah teka-teki bagi semua orang. Pengguna sungguhan menebak dari konteks, pengguna pembaca layar hanya mendengar “edit text, kosong” tanpa petunjuk apa pun. Elemen label menutup celah itu: label adalah nama resmi sebuah kontrol, yang terlihat di layar sekaligus diumumkan alat bantu.
Mengikat label ke kontrol bisa dilakukan dua cara, dan keduanya sama sahnya.
Dua Pola Penulisan #
Pola pertama memakai atribut for yang menunjuk id kontrol; pola kedua langsung membungkus kontrol di dalam label:
<div>
<label for="nama">Nama peserta</label>
<input type="text" id="nama" name="nama">
</div>
<div>
<label>
Alamat email
<input type="email" name="email">
</label>
</div>Hasil Render:
Mari kita telaah kode di atas:
<label for="nama">+id="nama": nilaiforharus persis sama denganidkontrol — inilah tali yang mengikat keduanya. Pola ini cocok saat label dan kontrol terpisah letaknya karena tata letak CSS.<label>membungkus<input>: tanpafordanid, kontrol yang berada di dalamlabelotomatis terikat. Pola ini ringkas dan bebas risikoidsalah tulis.- Pola campuran juga sah: bungkus kontrol lalu tetap pasang
for/id— berguna agar markup tetap eksplisit.
Klik Label = Aktifkan Kontrol #
Label bukan sekadar hiasan teks. Mengklik label menempatkan fokus ke kontrol yang diikatnya — dan untuk checkbox serta radio, klik label langsung mencentangnya. Konsekuensinya besar di ponsel: area yang bisa diketik meluas dari kotak kecil berukuran belasan piksel menjadi seluruh baris teks label. Jari pengguna berterima kasih diam-diam.
Bagi pengguna pembaca layar, label adalah nama yang diumumkan setiap kali kontrol menerima fokus. Tanpa label, kontrol hanya diumumkan jenisnya (“edit text”), bukan maksudnya. Karena itu aturannya tegas: semua kontrol interaktif wajib punya label.
Pola Bungkus untuk Checkbox dan Radio #
Dua kontrol ini paling sering memakai pola bungkus karena teksnya memang bagian dari pilihan:
<label>
<input type="radio" name="ukuran" value="sedang">
Sedang (240 ml)
</label>
<label>
<input type="radio" name="ukuran" value="besar">
Besar (350 ml)
</label>Mari kita telaah kode di atas:
inputberada paling depan dalamlabel: pilihan tampil sebagai [ (o) Sedang (240 ml) ] — seluruh baris dapat diklik.- Teks label sekaligus keterangan pilihan: pembaca layar mengumumkan “Sedang, radio button, 2 dari 2” — nama dan posisi dalam satu tarikan.
Ringkasan #
- Setiap kontrol form wajib berlabel — via
for/idatau via pola bungkus. - Klik label mengaktifkan kontrol; area sentuh yang luas penting untuk pengguna ponsel.
- Checkbox dan radio paling cocok memakai pola bungkus: teks pilihan sekaligus label.
aria-labelhanya untuk kondisi tanpa label visual; placeholder bukan pengganti label.