私は通常、チェックボックスとラジオボタンをそれぞれのラベルで囲む傾向があり、これが優れたUXプラクティスと見なされているかどうか疑問に思っていました。
長所短所 ?
私の主な理由の1つは、ラベルの外側にチェックボックス/ラジオボタンがある場合、主に配置に1つの要素のみを使用しているため、要素の配置に役立つことです。他のフォーム要素とのブロックステータスを維持するには、両方を親要素内にラップする必要があります。
チェックボックスの周りにラベルをラップします。これにより、ボタンのクリックがはるかに簡単になります。
ラベルがコントロールから分離している場合、それらの間にクリックできないギャップがしばしばあります。
<input id="click-me" name="click-me" type="checkbox"/>
<label for="click-me">
Click me
</label>
download bmml source – Balsamiq Mockups で作成されたワイヤーフレーム
コントロールの周りにラベルをラップすると、このギャップがなくなります。
<label for="no-click-me">
<input id="no-click-me" name="no-click-me" type="checkbox"/>
No, click me
</label>
両方をラップする4つの理由<input type=radio>
および<input type=checkbox>
内<label>
。
これは最良の答えではないかもしれませんが、本質的に良いことでも悪いことでもないと思います。ただし、フォーム要素をlabel
タグでラップする利点の1つは、スタイルシートを使用してクリック可能なオブジェクトの領域を大幅に拡大できることです。
アクセシビリティの目的で、要素をラベルタグでラップするだけでは必ずしも十分ではないことに注意してください。要素には常にIDを指定し、for
タグでは常にlabel
属性を使用する必要があります。一部のスクリーンリーダーは、ラベルがないとラベルをフォーム要素に正しくリンクしません。
それ以外はどちらにしてもいいと思います。
(この回答が本質的に技術的なものであった場合は謝罪しますが、私はデザイナーではなく開発者です。)
Html5リファレンスの関連セクションは次のとおりです。
https://html.spec.whatwg.org/multipage/forms.html#the-label-element
それは次のように述べています:
- Label要素には、最大で1つの子孫input要素、button要素、select要素、またはtextarea要素を含めることができます。
- Label要素のfor属性は、フォームコントロールを参照する必要があります。
したがって、単一のフォーム要素をラップすることができ、for属性を使用する場合はフォーム要素を参照する必要がありますが、属性を使用する必要はなく、ラップする必要もありません。
構造的な観点から、私はラベルを、実際には単なるラベルである別個の要素として考えることを好みます。両方を含める必要がある場合は、コンテナーdivを使用することをお勧めします。これにより、ラベルに含まれるフォーム要素を気にすることなく、一般的な方法でラベルのスタイルを設定できます。もちろん、基本的なフォーム要素はスタイリングを継承する傾向がないため、区別は主に学術的なものです。
入力の周りにラベルをラップしない理由の1つは、入力フィールドがラベルではないためです。意味的には、ラベル内に入力を入れることは意味がないと思います。その方法で使用することを意図していませんでした。
ラベル内で入力をラップするときに発生する可能性がある唯一の問題は、入力の状態がtrue(チェックされている)の場合にラベルのスタイルを設定することです。通常、これはCSS input:checked + label
-入力がネストされている場合は、JavaScriptを使用してラベルをスタイルする必要があります。
ここの例( https://www.piccolino.com/collections/gliders )は、フィルターメニューに色見本を表示し、ラベルを使用して背景画像、ホバー状態、アクティブ状態を表示します。入力は非表示になり、モデルデータのキャプチャにのみ使用されます。
また、クロスブラウザ、クリック、および上記のステートメントで指摘されたその他の問題を回避する方法のいくつかの良い例については、 Bootstrap を参照してください。
スクリーンリーダーの暗黙のラベルについては、このビデオを確認してください: https://youtu.be/F02AWoK9dXo 記事 http://usability.com.au/2013/04/accessible-forms-1 -labels-and-identification /
LABELタグ内のチェックボックスの折り返しは、IE8でも「ラベル」をクリックするとチェックボックスのクリックがトリガーされるため、適切なマークアップです。
それ以外の場合は、JavaScriptの回避策を使用して同じことを修正する必要があります。これは、Webサイトの追加コードです。