我对使用标签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标准中没有定义为错误。可以了