使用fieldset和legend元素来描述表单控件中的组____20160503

原文地址


说明

该技巧的目的是为相关表单控件提供一个语义群组。这允许用户更快更有效地理解控件之间的关系,并与表单进行交互。

表单控件可以使用fieldset元素进行分组。所有控件都在一个给定的fieldset内,相互关联。fieldset内的第一个元素必须是一个legend元素,该元素给群组提供一个标签或描述。开发者应该避免使用不必要的嵌套fieldset,否则,会导致混乱。

控件分组对相关联单选和复选按钮很重要。当有单独的name区域时,一个单选或复选按钮集合是相关的。作为选择列表,他们工作方式相同,允许用户从选项集中进行选择,不同点是单选按钮只能选择一个,复选按钮可以选择多个。每个单选或复选按钮的单独标签可能不足以传达群组的描述信息。在这种情况下,有必要在语义上将它们组合起来,以便作为一个单独控件,同时提供群组级别的额外描述。用户代理会在每个控件标签之前呈现legend值,并提供该描述,用来提醒用户它们是相同群组的一部分。

组合其他控件组合也是有用的。例如,手机用户地址的一些区域可能会使用“地址”legend组合起来,然后为这些控件提供群组级别的描述。经验法则,在一个大表单中,一个控件组需要额外的标题提供该组的描述,使用fieldsetlegend元素是适合的。

但是,当相关联单选或复选按钮包含清楚的说明和不同的选择(例如,每个特定控件相关联的独立控件提供了足够的描述),不需要使用fieldlegend

一些开发者会避免使用fieldset元素,因为它在浏览器的默认显示会在群控控件周围画一个边框。视觉群组也是有用的,开发者应该严肃地考利限制它(或者视觉群组的一些表单)。视觉样式可以在CSS中重写fieldsetborder属性和legendposition属性。


样例

样例1:多选测试

该样例展示一个测试项目,有一个问题和5个可能的答案。每一个答案通过单选按钮来显示,单选按钮包含在fieldset内,测试问题使用legend标记。fieldset 元素可将表单内的相关元素分组。 标签为fieldset元素定义标题。


效果

戏剧哈姆雷特 作者是:



样例2:复选框

个人简介也允许用户指明自己的兴趣,通过选择复选按钮,每一个复选按钮都有一个标签。


效果

以下我感兴趣的是(检查所有应用):

样例3:相同name属性的单选按钮


效果

你最喜欢的哲学家

样例4:逻辑有关控件

此例子中,居住地址和邮寄地址是通过fieldset中的legend值分开的;


效果

居住地址: 更多居住信息
邮寄地址 更多邮寄信息

屏幕阅读器体验效果

  • 在IE11浏览器中,使用争渡、永德屏幕阅读器,无法读出“legend”元素中的文本;
  • 在IE11浏览器中,使用NVDA屏幕阅读器,第一次进入field区域(可以是tab从上向下浏览,也可以是用shift+tab从下向上浏览):朗读形式是:legend内的文本+“分组”+群组内元素, 朗读样例:“你最喜欢的哲学家 分组 柏拉图 单选按钮 已选中”。