问题 标签只能引用输入元素吗?


W3Schools有这个说 标签

<label> tag定义了一个标签 输入 元件。    [强调我的]

这是否意味着以下HTML无效?

<html>
    <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没有。 哪个是对的?


11778
2017-07-07 19:35


起源



答案:


根据 W3C 它适用于表单控件,表单控件是 定义为

  • 纽扣
  • 复选框
  • 单选按钮
  • 菜单
  • 文字输入
  • 文件选择
  • 隐藏的控件
  • 对象标签

所以FireFox在技术上是正确的,尽管如果浏览器没有将它限制在那些元素中,我几乎不会认为它“破坏”。


8
2017-07-07 19:44



语义元素是网络上的第一个重要步骤 - 所以坚持屏幕阅读器等规范通常是一个好习惯。 - Olga


答案:


根据 W3C 它适用于表单控件,表单控件是 定义为

  • 纽扣
  • 复选框
  • 单选按钮
  • 菜单
  • 文字输入
  • 文件选择
  • 隐藏的控件
  • 对象标签

所以FireFox在技术上是正确的,尽管如果浏览器没有将它限制在那些元素中,我几乎不会认为它“破坏”。


8
2017-07-07 19:44



语义元素是网络上的第一个重要步骤 - 所以坚持屏幕阅读器等规范通常是一个好习惯。 - Olga


HTML规范说,关于 label's“for”属性,“当存在时,此属性的值必须与同一文档中某个其他控件的id属性的值相同。如果不存在,则定义的标签与元素的内容相关联。 “

因此“for”中的id引用应该是控件的id引用。什么是控制?规范基本上说是任何 input 是一个控件,原样 buttonselect, 要么 object。所以Firefox在技术上是正确的 - 一个 div 不是一个控制。


5
2017-07-07 19:42



你一直说 id,不是吗? for? - Motti
是的,你是对的。编辑修复。 - Jacob Mattison


我会说这不适合使用标记,因为标签语义是它们专门用于控件。

LABEL元素用于指定   没有控件的标签   隐式标签,

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


1
2017-07-07 19:42