6

我从来没有理由将标签元素放在图例元素中(从未真正考虑过或看到它完成)。但是对于我正在实施的设计,这样做很诱人。

这就是我想做的事情:

<fieldset>
<legend><label for="formInfo">I would like information on</label></legend>
<select id="formInfo">
    <option value="Cats">Cats</option>
    <option value="Dogs">Dogs</option>
    <option value="Lolz">Lolz</option>
</select>
</fieldset>

它在 Firefox3、Safari、Opera 和 IE6/7 中按预期工作(单击标签聚焦相应的输入)并通过验证,但我只是想知道是否有任何已知原因(可访问性?语义?浏览器问题)为什么不应该这样做

4

2 回答 2

13

你在哪里</fieldset>

从语义上讲,legend描述 afieldset,就像label描述单个字段一样。

字段集应该用于将语义相关的字段组合在一起(例如,“地址”字段集可能具有街道、城市和国家的输入字段)。

假设您在字段集中有多个字段,那么执行您的建议在语义上没有意义——您需要创建单独的图例文本来描述字段集,然后为每个字段创建一个标签。

如果您只有一个字段,那么您根本不需要字段集或图例。

所以,基本上,你不应该做你正在做的事情。

如果你这样做是为了有额外的元素来附加 CSS 规则或 Javascript 事件,你最好使用通用元素divspan这样不会混淆文本到语音和其他非视觉用户代理。

即,在可访问性/语义方面(它不暗示任何内容)与滥用语义元素(即使只是轻微地,如本例中)相比,使用div或实际上是中立的,这可能会产生误导。span想象一下文本到语音浏览器中布局的最佳情况:文本被大声朗读两次,一次作为图例,一次作为标签——为什么有人希望大声朗读“我想要信息”这个短语两次给他们?select特别是因为它仅在控件中的选择上下文中才有意义。

于 2008-10-27T06:05:00.557 回答
0

好吧,标签元素本身看起来不错——它是“formInfo”元素的描述,所以不用担心。然而,从语义上讲,这个legend元素是什么意思?它应该是整个字段集的标题......

于 2008-10-27T03:33:12.673 回答