语义用法<label>也出了一个<form>?



我对使用标签label有疑问。

我有一个div作为一个小部件,模拟一个高级下拉列表。

<div class="control">
    <label class="description">Choose:</label>
    <div class="widget__list">...some other content...</div>
</div>

这里W3C规范(http://www.w3.org/TR/html401/interact/forms.html#h-17.9)说:

LABEL元素用于为没有隐式标签

的控件指定标签

(更新:请不要依赖上面的(过时的)报价。参考HTML5规范链接如下)

向上滚动到"控件"部分(http://www.w3.org/TR/html401/interact/forms.html#h-17.2),我可以看到在"控件类型"列表中有类型菜单

我想知道的是:
  • 我的div-widget属于菜单控件类别吗?
  • 如果是,我的小部件应该被包装成一个form元素,即使我没有任何HTML本地控制(input, select, button等)在它吗?
  • 我使用不正确的label元素(不在form的上下文中),我应该把它改成span吗?

这些问题在语义上最正式的答案是什么?

<标题>编辑:

引用是指HTML4规范,导致提出上述问题。目前label的HTML5规范已经给出了我需要的答案(感谢@PeterKrauss)。

根据W3C验证器,您的文档是有效的。

这意味着在当前的HTML标准中,您的label大小写没有被定义为错误。所以你不应该担心更多的语义,只要像这里一样使用它——如果它对你来说是自然的,如果它像预期的那样工作。

向上滚动到"控件"部分(http://www.w3.org/TR/html401/interact/forms.html#h-17.2)

你不想用旧的HTML4规范做任何事情。这本书出版于1999年。

当前的HTML标准是在https://html.spec.whatwg.org/multipage/。该规范关于label元素的部分见https://html.spec.whatwg.org/multipage/forms.html#the-label-element。

我的div-widget属于菜单控件类别吗?

当前的HTML标准没有定义一个叫做"菜单控件"的类别;所以label元素是否适合作为一个类别并不重要。

我使用不正确的标签元素(不是在一个表单的上下文中),我应该把它改成span吗?

你没有用错。如果是,W3C验证器会将其标记为错误。换句话说,您的情况在当前HTML标准中没有定义为错误。可以了

最新更新