HTML Academy · Pelajaran

Elemen label dan Aksesibilitas

Hubungkan label dengan input untuk mendukung pembaca layar.

Pelajaran 3 dari 413 langkah

Elemen label dan Aksesibilitas adalah pelajaran HTML Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Alasan Label Penting

Elemen <label> menghubungkan deskripsi teks dengan kontrol formulir:

  • Pembaca layar mengumumkan label saat input mendapat fokus
  • Mengeklik label mengaktifkan input terkait
  • Tanpa label, pengguna pembaca layar tidak tahu kegunaan suatu bidang

Label Eksplisit dengan for

Atribut for menghubungkan label ke input melalui id:

<label for="email">Email address</label>
<input type="email" id="email" name="email">

<!-- for="email" matches id="email" -->
<!-- Clicking "Email address" moves focus to the input -->
<!-- Required for proper accessibility -->

Label Implisit (Membungkus)

Membungkus input di dalam label membuat hubungan implisit:

<!-- No for/id needed — input is inside label -->
<label>
  Email address
  <input type="email" name="email">
</label>

<!-- Works fine but explicit association is more robust
     (especially when label and input are far apart in the DOM) -->

Pemisahan Label + Input

Saat label dan input tidak dapat berdampingan, gunakan aria-labelledby:

<h2 id="section-title">Billing Details</h2>
<input type="text" name="name" aria-labelledby="section-title">
<!-- The heading serves as the accessible label for the input -->

aria-label sebagai Alternatif

Saat label yang terlihat tidak memungkinkan, gunakan aria-label:

<!-- Search form with icon button -->
<form>
  <input type="search" name="q" aria-label="Search the site">
  <button type="submit" aria-label="Submit search">
    <svg><!-- magnifier icon --></svg>
  </button>
</form>

Satu Label per Input

Setiap input harus memiliki tepat satu label. Input yang berbeda harus memiliki label masing-masing:

<!-- BAD: one label for multiple inputs -->
<label>First and last name
  <input type="text" name="first">
  <input type="text" name="last">
</label>

<!-- GOOD: separate labels -->
<label for="first">First name</label>
<input type="text" id="first" name="first">

<label for="last">Last name</label>
<input type="text" id="last" name="last">

Penandaan Bidang Wajib

Tandai bidang wajib secara aksesibel:

<!-- Visual + accessible required indicator -->
<label for="email">
  Email address
  <span aria-hidden="true">*</span>         <!-- visual asterisk -->
  <span class="sr-only">(required)</span>    <!-- screen reader text -->
</label>
<input type="email" id="email" name="email" required>

Fieldset dan Legend untuk Grup

Kelompokkan input yang berkaitan dengan <fieldset> dan <legend>:

<fieldset>
  <legend>Shipping address</legend>

  <label for="addr-street">Street</label>
  <input type="text" id="addr-street" name="street" autocomplete="address-line1">

  <label for="addr-city">City</label>
  <input type="text" id="addr-city" name="city" autocomplete="address-level2">
</fieldset>

Fieldset untuk Grup Radio

Grup tombol radio selalu memerlukan fieldset + legend:

<fieldset>
  <legend>Preferred contact method</legend>

  <label>
    <input type="radio" name="contact" value="email"> Email
  </label>
  <label>
    <input type="radio" name="contact" value="phone"> Phone
  </label>
  <label>
    <input type="radio" name="contact" value="text"> Text message
  </label>
</fieldset>

Placeholder Bukan Label

Placeholder menghilang saat pengguna mengetik — placeholder tidak dapat menggantikan label:

<!-- BAD: placeholder used as a label -->
<input type="email" placeholder="Email address">
<!-- Screen readers may announce the placeholder, but many skip it -->
<!-- User cannot see the field purpose while typing -->

<!-- GOOD: -->
<label for="email">Email address</label>
<input type="email" id="email" placeholder="you@example.com">

Label yang Disembunyikan Secara Visual

Jika desain tidak memiliki label yang terlihat, sembunyikan label secara visual, tetapi tetap pertahankan untuk pembaca layar:

<label for="search" class="sr-only">Search</label>
<input type="search" id="search" placeholder="Search...">

/* sr-only utility class: */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

Pemeriksaan Singkat

Bagaimana cara menghubungkan label dengan input menggunakan hubungan eksplisit?

Ringkasan: Aksesibilitas label

Hal-hal penting tentang label:

  • Setiap input selalu memerlukan label
  • <label for="id"> untuk hubungan eksplisit
  • Membungkus input di dalam label = hubungan implisit
  • aria-labelledby menghubungkan ke elemen apa pun berdasarkan id
  • aria-label untuk tombol yang hanya berisi ikon tanpa teks yang terlihat
  • <fieldset> + <legend> untuk kontrol yang dikelompokkan
Gratis untuk memulai

Belajar HTML dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
40
Pelajaran
159

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Elemen label dan Aksesibilitas” gratis?

Ya — teks lengkap “Elemen label dan Aksesibilitas” 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 “Elemen label dan Aksesibilitas”?

Hubungkan label dengan input untuk mendukung pembaca layar. 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 3 dari 4.

Berapa lama pelajaran “Elemen label dan Aksesibilitas” 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. Elemen form action method enctype
  2. Jenis Input text password email number tel
  3. Elemen label dan Aksesibilitas
  4. Elemen button: submit reset button
← Kembali ke HTML Academy