【问题标题】:Is using a HTML Label to wrap elements semantic?是否使用 HTML 标签来包装元素语义?
【发布时间】:2015-07-02 22:23:45
【问题描述】:

我正在考虑使用label 来包装h3p 标记。在我看来,这是有道理的,因为标签有标题和描述,并且都与输入相关。但是,我似乎在规范中找不到任何关于这是否可以完成的信息。

这是一个例子:

<label for="test1">
    <h3>Label Heading</h3>
    <p>Label Description</p>
</label>

<input id="test1" name="test" type="radio"/>

如果不是,有没有人有更好的建议?

【问题讨论】:

  • 是否在 W3C Validator 中验证?
  • 不要将有效性与语义混为一谈。它们是不同的东西。
  • 确实——在您谈论语义之前,您需要首先确保所讨论的片段是有效的。在这种情况下,它根本就无效。

标签: html validation semantics


【解决方案1】:

W3 HTML Validator 中粘贴以下代码会产生两个错误

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <label for="test1">
            <h3>Label Heading</h3>
            <p>Label Description</p>
        </label>
        <input id="test1" name="test" type="radio"/>
    </body>
</html>

在此上下文中不允许元素 h3 作为元素标签的子元素。

元素 p 在此上下文中不允许作为元素标签的子元素。

所以这段代码是相当无效的。

我还要说语义上“无效”(或至少很奇怪),因为我认为标签是输入框的描述,而标题不适合那里。

【讨论】:

    【解决方案2】:

    根据 W3c,他们建议不要在内联元素中使用块元素。因为标签是内联元素,标题和段落是块元素。

    【讨论】:

    【解决方案3】:

    听起来您正试图在每个输入的基础上复制fieldset and legend

    您可能想要的是aria-describedby

    <label for="emailInput" id="email-address-label" aria-describedby="email-address-label-description">Email</label>
    <span class="label-description" id="email-address-label-description">This will also be your login username</span>
    <input type="email" id="emailInput" autocapitalize="none" spellcheck="off" autocomplete="email" inputmode="email" />

    【讨论】:

      【解决方案4】:

      如果您正在尝试验证您的 HTML/CSS 和其他代码,这里有一个很棒的官方网站:

      W3C Validator

      您可以通过指定您的网站地址或复制粘贴源代码来检查。

      除了每个人的喜好之外,在谈论WWW时,您将有保证受到“统治者”(不知道怎么说)的考验。

      【讨论】:

        【解决方案5】:

        This link 应该向你描述为什么你不应该那样写。

        您可以在标签标签中使用&lt;span class="labelHead"&gt;&lt;/span&gt; &lt;span class="labelDescription"&gt;&lt;/span&gt;,但我不建议这样做。

        最好写&lt;h3&gt;...&lt;/h3&gt;&lt;label for="..."&gt;...&lt;/label&gt;&lt;input..

        除了屏幕阅读器、机器人和类似设备,for 属性仅用于使文本可点击以获取输入字段的焦点,对吧?

        【讨论】:

          猜你喜欢
          • 2021-10-09
          • 2012-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-04
          • 2010-09-19
          • 2015-02-16
          • 1970-01-01
          相关资源
          最近更新 更多