<label>的语义使用也来自<form>?

时间:2015-09-04 11:48:07

标签: html5 forms css3 label semantic-markup

我对使用标记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规范

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

我想知道的是:

  • 我的div-widget是否属于菜单控件的类别?
  • 如果是,即使我没有任何HTML原生控件(forminput,{{1},我的小部件也应该包含在select元素中在它?等等?
  • 我错误地使用了button元素(不在label的上下文中),我应该将其更改为form吗?

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

编辑:

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

1 个答案:

答案 0 :(得分:2)

您的文件是valid according to the W3C validator

这意味着您的label案例未在当前HTML标准中定义为错误。所以你不应该更担心语义,只要像你在这里一样使用它 - 如果它对你来说很自然,并且它是否按预期工作。

  

向上滚动到“控件”部分(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标准中定义为错误。所以你很高兴。