Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html div vs fieldset元素--图例验证_Html - Fatal编程技术网

Html div vs fieldset元素--图例验证

Html div vs fieldset元素--图例验证,html,Html,我需要HTML专家的一些建议 从语义上讲,我觉得FIELDSET最适合包含供用户填写和提交的字段列表的表单。但是,如果没有嵌入图例元素,则页面无法通过HTML5验证。我们使用H1标记来命名表单,不需要图例 我们可以向字段集添加一个空的图例元素,从而修复验证问题。但是,在这种情况下是否有更好的方法(而不仅仅是DIV) 感谢您的真知灼见 你说得对,字段集符合要求 在我看来,DIV在设计人员不知道容器还可以使用什么的情况下使用得太频繁了,就像TABLE过去常常用于布局一样(主要是出于懒惰) 我没有看到

我需要HTML专家的一些建议

从语义上讲,我觉得FIELDSET最适合包含供用户填写和提交的字段列表的表单。但是,如果没有嵌入图例元素,则页面无法通过HTML5验证。我们使用H1标记来命名表单,不需要图例

我们可以向字段集添加一个空的图例元素,从而修复验证问题。但是,在这种情况下是否有更好的方法(而不仅仅是DIV)


感谢您的真知灼见

你说得对,
字段集符合要求

在我看来,
DIV
在设计人员不知道容器还可以使用什么的情况下使用得太频繁了,就像
TABLE
过去常常用于布局一样(主要是出于懒惰)


<>我没有看到一个空的<代码>图例< /C>元素,但是考虑用一个样式<代码>图例< /COD>替换你的<代码> H1 < /代码>以获得最大语义。

< P>一个没有传说的字段集确实应该是一个分组表单输入的手段。不过,不要害怕使用div或form元素,尤其是如果您打算在需要图例之类的东西的地方重用此代码。这是因为应避免使用带有图例的字段集,除非您使用它们对一组复选框或单选按钮进行分组

为什么??一些屏幕阅读器认为字段集只会以这种方式使用,并针对该用例进行了优化,导致屏幕阅读器在列表中的每个输入上都会宣布图例,这使得通过输入制表变得烦人冗长,降低了表单的可访问性。这是一种罕见的情况,在这种情况下,您可以通过使HTML在语义上过于丰富而降低其可用性


要了解更详细的解释,请参阅这个古老(但仍然相关)的链接:

我经常发现自己使用的表单字段集没有图例,并且提出了一个优雅且屏幕阅读器友好的解决方案,同时保留了正确的文档大纲和HTML5验证。 请参阅以下代码:

<section>
  <h2 id="legend-heading">
     Inputfield buttons
  </h2>

  <form method="post" action="" name="inputfield-form">
    <fieldset aria-labelledby="legend-heading">
      <legend class="hide"></legend>
      ...
    </fieldset>
  </form>
</section>

输入字段按钮
...

legend元素上的类“hide”指定了规则“display:none”,用于从视图中隐藏内容。此外,屏幕阅读器会跳过已指定显示:无的内容。通过在字段集上设置aria labelledby attibute,我们告诉屏幕阅读器使用具有相应id()的元素。通过使用H2(或任何其他标题元素),我们得到了一个适当的文档大纲,最后我们得到了可访问的、有效的和对SEO友好的干式代码。

或者甚至考虑设置<代码>显示:<代码>传奇> <代码>中的“没有/代码”(假设它与离开H1的语义相关)。并非所有的语义信息都需要直接呈现给用户。@zzzzBov:想法不错,不过如果将
字段集
描述为一个标题,则最好对
图例
进行样式化。这就是它的目的。不幸的是,LEGEND标签很难设计,而且定位的可能性有限。请看这里了解一些信息:我对此有点困惑,因为最新的HTML5规范说图例元素是可选的。我在没有图例的情况下尝试了它,它通过了W3验证程序。您在哪里验证失败?请参阅:2011年8月6日HTML5的编辑草稿说,“组的名称由fieldset元素的子元素第一个legend元素给出,如果有的话。”这将向我表明@adimauro是正确的,legend元素是可选的。这非常有趣,感谢分享。这也提供了另一个保持图例文本简洁和有意义的理由,尽管对于屏幕阅读器来说,这似乎是一个有缺陷的方法来传递内容。我也不相信你第一段的最后一句话,但这是一个非常有用的贡献。谢谢,韦斯利。虽然屏幕阅读器采用这种行为(几乎所有主要的阅读器都采用这种行为)似乎有些奇怪,但这是有原因的。在ARIA的许多开发之前(其中大部分还没有在浏览器或阅读器中实现),没有其他方法可以在需要的用例中实现这种行为。相比之下,大多数人期望它的行为与标题标记(h1-h6)的语义用法几乎完全相同,除了h标记还有助于澄清输入组与整个文档的语义关系,而不仅仅是与表单本身的语义关系。@BrunoTorquato,这不是屏幕阅读器应该解决的问题吗?为什么我们要适应他们的错误,而不是保持正确,让他们适应我们的正确性?@Pacerier,因为受影响的是用户,而不是屏幕制造商readers@Pacerier不完全是。屏幕阅读器所做的一切都是正确的。对于绝大多数在野外实际使用的
(我提到的那些简单的例子),它是相当有用和适当的行为。我认为过度热心的网络开发人员(像我一样)所造成的伤害要大得多,他们喜欢称赞自己想出了让代码“优雅”和“语义准确”的过于聪明的方法。我们被关于代码外观的观点所束缚,以至于忘记了我们最终是在为人们构建体验。现代浏览器支持