Html 如果元素由标签包裹,标签是否要求;至于;属性

Html 如果元素由标签包裹,标签是否要求;至于;属性,html,accessibility,section508,Html,Accessibility,Section508,假设我有一套收音机。我不是穴居人,所以我知道我需要把和那些联系起来。例如,我喜欢将单选按钮包装在相应的标签内 例如: <fieldset> <legend>Should I provide a "for" attribute?</legend> <label><input type="radio" name="define_the_for_attribute" id="define_the_for_attribute_yes"

假设我有一套收音机。我不是穴居人,所以我知道我需要把
和那些
联系起来。例如,我喜欢将单选按钮包装在相应的标签内

例如:

<fieldset>
    <legend>Should I provide a "for" attribute?</legend>
    <label><input type="radio" name="define_the_for_attribute" id="define_the_for_attribute_yes" value="yes" />Yep, if you know what's good for you</label>
    <label><input type="radio" name="define_the_for_attribute" id="define_the_for_attribute_no" value="no" />Nah, that would be redundant and repetitive</label>
</fieldset>

通过“label元素的for属性必须引用表单控件”(请参阅),但这可以理解为“如果为属性指定可选的
,则它必须引用有效的表单控件”。

根据HTML5规范-如果未指定for属性,但label元素有一个可标记的元素子体,则树顺序中的第一个此类子体是label元素的标记控件


因此,基本上,不需要,只要它包装以下任何元素:按钮、输入(如果type属性不处于隐藏状态),keygen,meter,output,progress,select或textarea根据规范,当控件元素包装在
标签
元素中时,不需要
for
属性。这一原则也适用于所有现代浏览器,尽管一些非常旧的IE版本只支持与
for的显式关联属性

出于逻辑原因,人们可能仍然更喜欢使用
for
属性:控件在逻辑上不是标签的一部分,因此应该将其放置在标签之外。然后您需要
for
属性,以便从
标签
标记中获益


当控件不能是
标签
元素的后代时,必须使用
for
属性,例如,当
元素的一列中有标签时,控件在另一列中。

这与可访问性有何关联?将输入元素与其标签关联是基本技术之一用于使web应用程序可访问的。@c-smile标签对于使表单可访问非常重要。它们让屏幕阅读器的用户知道给定字段的用途。@c-smile:for
属性主要是一个可访问性功能,将简短描述与字段相关联。还具有功能用途,例如在复选框中:单击其label还可以切换其状态。@Nick我相信您在这里混合了可用性和可访问性。有aria labeledby、aria description等属性。HTML中的
标签
包装严格来说是UI/UX功能。它们在输入与可读文本之间建立关联时具有一些a11y值。
<fieldset>
    <legend>Should I provide a "for" attribute?</legend>
    <label for="define_the_for_attribute_yes"><input type="radio" name="define_the_for_attribute" id="define_the_for_attribute_yes" value="yes" />Yep, if you know what's good for you</label>
    <label for="define_the_for_attribute_no"><input type="radio" name="define_the_for_attribute" id="define_the_for_attribute_no" value="no" />Nah, that would be redundant and repetitive</label>
</fieldset>