14

W3Schools は、ラベルについて次のように述べています。

<label>タグは、input要素 のラベルを定義します。【地雷強調】

これは、次の HTML が無効であることを意味しますか?

<!doctype html>
<html>
    <head>
         <title>Example document</title>
    </head>
    <body>
        <label for="x">Label</label> 
        <hr>
        <div id="q" contentEditable="true">Hello</div>
        <hr>
        <div id="x" contentEditable="true">World</div>
    </body>
</html>

Chrome と IE8 はどちらもがクリックされWorldたときにフォーカスを与えLabelますが、Firefox はそうではありません。どちらが正しい?

4

4 に答える 4

10

W3Cによれば、フォーム コントロールに適用され、フォーム コントロールは次のように定義されます。

  • ボタン
  • チェックボックス
  • ラジオボタン
  • メニュー
  • テキスト入力
  • ファイル選択
  • 非表示のコントロール
  • オブジェクトタグ

したがって、FireFox は技術的には正しいのですが、ブラウザーがこれらの要素に制限していない場合、それが「壊れている」とはほとんど考えられません。

于 2009-07-07T19:44:05.810 に答える
5

HTML 仕様では、labelの「for」属性について、「存在する場合、この属性の値は、同じドキュメント内の他のコントロールの id 属性の値と同じでなければなりません。存在しない場合、定義されているラベルは要素のコンテンツに関連付けられています。」

したがって、「for」の id 参照は、コントロールのものでなければなりません。コントロールとは?仕様では、基本的に anyinputbuttonselect、またはのようにコントロールであると述べていますobject。したがって、Firefox は技術的に正しいです。a はdivコントロールではありません。

于 2009-07-07T19:42:59.570 に答える
1

ラベルのセマンティクスは、マークアップがコントロール専用であるため、マークアップの適切な使用ではなかったと言えます。

LABEL 要素は、暗黙的なラベルを持たないコントロールのラベルを指定するために使用されます。

http://www.w3.org/TR/html401/interact/forms.html#h-17.9.1

于 2009-07-07T19:42:33.143 に答える