Menu

HTML Label: for Özelliği ve Form Alanlarını Etiketleme

<label> elementi bir form alanını nasıl adlandırır: onu for ve id ile ya da sararak bağlama, checkbox ve radio'lar için daha büyük tıklama alanı, ipuçları ve hata mesajları, gizli label'lar ve bağlantıyı bozan hatalar.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

label elementi ne yapar

<label> bir form alanına adını verir. Onu alanın id değerine ayarlanmış for ile bağla, iki şey olur: alan odaklandığında ekran okuyucular label'ı duyurur ve label metnine tıklamak alanı odaklar. Aşağıdaki iki metne de tıkla:

"City" metnine tıklamak imleci alanına koyar. "Country" metnine tıklamak hiçbir şey yapmaz ve o ikinci alana odaklanan bir ekran okuyucu adsız bir "edit text" duyar. İkisi aynı görünür; yalnızca birinin label'ı var.

Bir label'ı bağlamanın iki yolu

for ve id kullan ya da alanı label'ın içine koy:

for ve idSarma
id gerekirEvet, sayfada benzersizHayır
Label ve alan ayrı durabilirEvet (bir tablo hücresi, bir grid)Hayır, alan içindedir
Kolay bozulurBir yazım hatası ya da tekrarlanan bir id ileTek bir label'a iki alan koyarak

for, alanın name değeriyle değil, id değeriyle eşleşmelidir. İkisi çoğunlukla aynı kelimedir, bu da biri birini değiştirene kadar hatayı gizler. İkisini birden yapmak (sarmak ve for) sorun değildir ve yaygındır.

Bir label <input> (type="hidden" hariç), <select>, <textarea>, <button>, <meter>, <output> ve <progress> elementlerine bağlanabilir. Bir label bir alanı adlandırır. Bir alanın birden fazla label'ı olabilir, ama tek ve net bir label herkes için daha kolaydır.

Checkbox ve radio'lar için daha büyük tıklama alanı

Küçük kontroller için label en çok önemi taşır: üzerinde herhangi bir yere tıklamak kutuyu değiştirir, yani hedef 13 piksellik bir kare değil, bütün metin satırıdır. Label'a stil vermek hedefi daha da büyütebilir:

Her satırın padding'ine, kutudan uzakta bir yere tıkla. İlk satır değişir; ikincisi, kutunun kendisine denk getirmedikçe hiçbir şey yapmaz. Checkbox'lar hakkında daha fazlası HTML checkbox sayfasında.

İpuçları ve hata mesajları

Bir label kısa olmalı: alanın adı. Ek talimatlar ve hata mesajları, ekran okuyucular önce label'ı, sonra açıklamayı okusun diye aria-describedby ile bağlanan ayrı elementlere girer:

Alan boşken Create'e bas, sonra AB ile, sonra ada99 ile. aria-describedby sayesinde bir ekran okuyucu "Username, required, edit text, 3 to 16 lowercase letters or digits, Enter a username." gibi bir şey duyurur. Yıldız aria-hidden durumundadır, çünkü required özelliği zaten "required" der; "star" duymak bir şey katmaz.

Gizli label'lar

Bazı alanların, örneğin bir Search butonunun yanındaki bir arama kutusunun, metin label dışında görünür bir ipucu vardır. Label yine de gereklidir; onu görsel olarak gizle ama ekran okuyucular için sayfada tut:

Onu display: none ya da visibility: hidden ile gizleme: bunlar onu ekran okuyuculardan da gizler ve her tarayıcı ve ekran okuyucu gizli bir label'ı hâlâ ad olarak kullanmaz. Diğer seçenek, input üzerindeki aria-label="Search courses" olur; bu, onu hiçbir label elementi olmadan adlandırır. Yer olduğunda görünür bir label yine de en iyi seçimdir: bir alanın ne için olduğunu görmek herkesin işine yarar.

Sık yapılan hatalar

  • id yerine name değerini gösteren for. Hiçbir şey bağlanmaz.
  • Tekrarlanan id'ler. for o id'ye sahip ilk elemente bağlanır; bu da sayfadaki başka bir formda bir alan olabilir.
  • Label yerine placeholder. Yazınca kaybolur ve güvenilir bir ad değildir.
  • Tek bir label içinde iki alan. Bir label bir alanı adlandırır; ikincisi label'sız kalır.
  • Bir checkbox label'ının içinde link, örneğin "terms" kelimesinin link olduğu "I accept the terms". Satırın bir kısmı kutuyu değiştirir, bir kısmı bir sayfa açar; yanlışlıkla denk getirmek kolaydır. Linki label'ın dışına koy.
  • Label'ı display: none ile gizlemek. Görsel olarak gizleyen bir class kullan.
  • Bir alanın yanında <label> olmayan metin. Aynı görünür ve hiçbir şey yapmaz. Alanlarının çevresindeki form için HTML form sayfasına bak.

Sıkça Sorulan Sorular

HTML'de label etiketi ne işe yarar?

Bir form alanını adlandırır. Alan odaklandığında ekran okuyucular label'ı okur, label'a tıklamak da alanı odaklar ya da bir checkbox veya radio buton ise işaretini değiştirir.

Bir label'daki for özelliği nedir?

for, label'ın ait olduğu alanın id değerini tutar: <label for="email">Email</label> <input id="email">. name ile değil, tam olarak id ile eşleşmelidir.

input'u label'ın içine mi koymalıyım yoksa for mu kullanmalıyım?

İkisi de güncel tarayıcılarda ve ekran okuyucularda çalışır. Sarmak id gerektirmez; for ve id ise label ile alanın işaretlemede farklı yerlerde, örneğin ayrı tablo hücrelerinde durmasına izin verir. Birçok ekip sarar ve ayrıca for da ekler.

Placeholder label'ın yerini tutabilir mi?

Hayır. Placeholder okur yazmaya başladığı anda kaybolur, çoğunlukla düşük kontrastlıdır ve alanın adı olarak güvenilir şekilde duyurulmaz. Görünür bir <label> kullan, placeholder'ı da kullanacaksan örnek bir değer için tut.

Bir label'ı nasıl gizler ama ekran okuyucular için korurum?

<label> elementini tut ve onu, ekran okuyuculardan da gizleyen display: none yerine, 1 piksele küçülten ve kırpan bir class ile görsel olarak gizle. Hiçbir label'a yer olmayan bir alan için alternatif, alanın üzerindeki aria-label olur.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA