Neden bir alan kümesi etiketine ihtiyacımız var?


165

Neden bir <fieldset>etikete ihtiyacımız var ? Hangi amaca hizmet ederse et, muhtemelen form etiketinin bir alt kümesidir.

W3Schools hakkında bazı bilgiler aradım:

  • <fieldset>Etiket bir formda bir grup ile ilgili elemanlar için kullanılır.
  • <fieldset>Etiketi, ilgili elemanların etrafında bir kutu çizer.

"Ne yapıyor" için "şartnamede niçin var olduğunu" yanlış anlayanlar için daha fazla açıklama. Çizim kısmının alakasız olduğunu düşünüyorum ve neden sadece ilgili bazı öğeleri bir formda gruplamak için özel bir etikete ihtiyacımız olduğunu anlamıyorum.


30
Neden herhangi bir etikete ihtiyacımız var? Arka plan renkleriyle 1 piksel div'lerden resim oluşturabildiğimizde neden bir img etiketine ihtiyacımız var?
Oded

127
Lütfen dikkat: W3C sahip hiçbir şey W3Schools'da ile ilgisi yok.
Wesley Murch

82
W3schools'a başvurmayın. Sadece MDN kullanın: fieldset @ MDN .
Mart'ta Sirko

9
@Madmartigan biliyorum. Ancak W3C, sorumun yanıtını almak için fazla bir şey bulamadığım spesifikasyonları veriyor.
Doğu Keşiş

2
W3Schools'u kullanma ve teknik bilgiler için daha güvenilir siteler kullanma (değil): w3fools.com
Denilson Sá Maia

Yanıtlar:


187

En açık, pratik örnek:

<fieldset>
  <legend>Colour</legend>

  <input type="radio" name="colour" value="red" id="colour_red">
  <label for="colour_red">Red</label>

  <input type="radio" name="colour" value="green" id="colour_green">
  <label for="colour_green">Green</label>

  <input type="radio" name="colour" value="blue" id="colour_blue">
  <label for="colour_blue">Blue</label>

</fieldset>

Bu, her radyo düğmesinin etiketlenmesine izin verirken, bir bütün olarak grup için bir etiket sağlar. Bu, özellikle kontrollerin ve efsanelerinin görsel sunumla ilişkilendirilemeyeceği yerlerde yardımcı teknolojinin (ekran okuyucu gibi) kullanıldığı yerlerde önemlidir.


4
Kullanışlı bir bağlantım yok, ancak görünüşe göre birçok ekran okuyucu , alan kümesindeki her etiketten önce gösterge metnini okuyor .
Wesley Murch

8
@Madmartigan - Bu iyi bir şey, hala aynı radyo düğmesi seti ile uğraştığınızı bildiğiniz anlamına geliyor. (Efsanenin kısa ve öz olmasını sağlamak için de bir nedendir ).
Quentin

1
mantıklı olan "yardımcı teknoloji".
Doğu Keşiş

5
Ayrıca, gruplanmış öğeleri 'devre dışı bırakmak' için <alan kümesi> kullanılabilir. <fieldset> 'in etikete' zorunlu 'özellik ekleyerek bir grubun gerekli olup olmadığını belirtmek için de kullanılmasını beklerim, maalesef bu işe yaramaz!
Simon Savai

41

Alan kümesinin başka bir özelliği, devre dışı bırakılmasının içindeki tüm alanları devre dışı bırakmasıdır.

<fieldset disabled>
  <legend>Disabled Fields</legend>
  <input type="text" value="Sample">
  <textarea>Text Area</textarea>
</fieldset>

<fieldset>
  <legend>Enabled Fields</legend>
  <input type="text" value="Sample">
  <textarea>Text Area</textarea>
</fieldset>


6
Tabii ki, disabledöznitelik, fieldsets ve form denetimleri için işlev gören formöğenin de haklı olarak uygulanması gerektiği argümanı olabilir . Bunun için bir anlam ifade ederdi, değil mi?
amn

25

Erişilebilirlik için gereklidir.

Çıkış: http://usability.com.au/2013/04/accessible-forms-1-labels-and-identification/

HTML 4 öğeleri fieldsetve legendbirçok farklı ilgi alanı içeren büyük bir formu tablo kullanmadan mantıklı bir şekilde düzenlemenize ve düzenlemenize olanak tanır. fieldsetEtiket seçilen elemanların etrafında kutuları oluşturmak için kullanılabilir ve legendetiket bu elementlere bir başlık verecektir. Bu şekilde form öğeleri belirlenmiş kategoriler halinde gruplandırılabilir.

Farklı tarayıcılar varsayılan fieldsetkenarlığı farklı şekillerde görüntüleyebilir. Basamaklı Stil Sayfaları, kenarlığı kaldırmak veya görünümünü değiştirmek için kullanılabilir.


HTML4'te alan kümesi yok. Bir HTML5 özelliği
radio_head


14

Açıklandığı gibi burada , bu etiketin amacı formunun örgüte netlik sağlamak ve dekorasyon formu elemanlarına bir tasarımcı daha kolay erişim sağlamaktır.


6

Fieldset, formlardaki öğeleri mantıklı bir şekilde düzenler, ancak işitsel tarayıcılar kullananların erişilebilirliğini de geliştirir. Fieldset kullanışlıdır ve bu nedenle geçmişte birçok uygulamada oldukça popülerdi, bu yüzden html'de de uyguladılar.


4

Radyolarınızı fieldset ile çevrelediğinizde ve radyo düğmesi giriş etiketlerinize kimlik eklemediğinizde, fieldset tarafından temsil edilen grubun tek bir öğe gibi tabchain'e eklendiğini beğendim.

Bu, bir formda sekmenize izin verir ve bir alan kümesine ulaştığınızda, seçilen radyoyu değiştirmek için ok tuşlarını kullanabilir ve işiniz bittiğinde sekme yapabilirsiniz.

Ayrıca, erişilebilirliği de unutmayın. Ekran okuyucular, formunuzu anlamak ve kullanıcıya bir tür doğal yolla okuyabilmek için fieldset + legend'e ihtiyaç duyar. Gören kullanıcıların görmesini istemiyorsanız efsaneyi yok etmekten çekinmeyin. Efsaneyi CSS ile doğru şekilde yerleştirmek ve şekillendirmek bazen özellikle eski tarayıcılarda çapraz tarayıcılardır, bu yüzden efsane etiketini ekran okuyucu kullanıcıları için görünmez yapıyor ve etiket gibi stilize ayrı, aria-hidden = "gerçek" bir yayılma alanı ekliyorum görüşlü kullanıcılar, stilleri kolaylaştırır ve erişilebilir olmasını sağlar.


This lets you tab through a form, and when you get to a fieldset, you can use arrow keys to change the selected radio, and then tab away when you're done.- Bu, radyo girişlerinin varsayılan davranışıdır ve alan kümeleriyle ilgisi yoktur. Onay kutuları varsayılan olarak farklı davranır.
Vladimir Kornea

2

CSS stili ve etiketleri kontrollerle ilişkilendirmek için kullanışlı buluyorum. Bir grup alanın etrafına görsel bir kap koymayı ve etiketleri hizalamayı kolaylaştırır.


2

Ben büyük bir form var ve bir tür form sihirbazında ayrılmak istediğinizde, form girişleri gruplandırmak için alan kümeleri kullanın.

Aynı sorular burada SO üzerinde cevaplanmıştır .


2

Sadece bazı avantajları özetlemek gerekirse:

HTML  <fieldset> öğesi, <label>bir web formunda MDN tarafından tanımlandığı şekliyle çeşitli denetimlerin yanı sıra etiketleri ( ) gruplamak için kullanılır .

Başka bir deyişle: Alan kümesi etiketi, formlarınızın daha açıklayıcı olması için alan kümelerini mantıksal olarak gruplandırmanıza olanak tanır. Bu nedenle, isteğe bağlı olarak ortak bir ad altında gruplandırılmış bir dizi form denetimi.

<fieldset>
  <legend>Choose your favorite animal</legend>

  <input type="radio" id="dog" name="animal">
  <label for="dog">Dog</label><br/>

  <input type="radio" id="cat" name="animal">
  <label for="cat">Cat</label><br/>
</fieldset>

Bir alan kümesi kullanmanın " avantajları " şunlardır:

  • verilerinizi (bu durumda bir form) mümkün olan en anlamsal şekilde işaretlemenize olanak tanır . Alanlarınızı bir alan kümesine yerleştirmenin, alanlarınızı bir div'a yerleştirmekten daha açıklayıcı olduğunu düşünün. Div, alanlar arasındaki ilişki hakkında hiçbir şey söylemez, bir alan kümesi size bir ilişki olduğunu söyler.
  • devre dışı kullanarak , tek seferde ve tüm içeriğini devre dışı bırakmanızı sağlar.
  • erişilebilirliğe yardımcı olur

1

Bana gelince, <fieldset>...</fieldset>elementin en büyük avantajlarından biri , formun içinde <form>...</form>olmasa bile bağlamı koruma yeteneğidir <fieldset>...</fieldset>.

Örneğin, aşağıdaki form:

<div class="header">
    <form id="myForm">
        <input type="text" name="someInput">
    </form>
</div>

<div class="footer">
    <fieldset form="myForm">
        <input type="text" name="someInput1">
    </fieldset>
</div>

aşağıdaki biçimle anlamsal olarak aynıdır:

<form>
    <input type="text" name="someInput">
    <input type="text" name="someInput1">
</form>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.