使用HTML Label来包装元素语义?

时间:2015-04-24 10:42:29

标签: html html5 validation semantics

我考虑使用label打包h3p标记。在我看来,这是有道理的,因为标签有标题和描述,都与输入有关。但是我似乎无法在规范中找到关于是否可以这样做的任何信息。

以下是一个例子:

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

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

如果没有人有更好的建议吗?

5 个答案:

答案 0 :(得分:5)

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不允许作为元素标签的子元素。

所以这段代码无效。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

听起来你正试图在每个输入的基础上复制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" />

答案 3 :(得分:0)

如果您正在尝试验证HTML / CSS和其他代码,那么它就是一个很棒的官方网站:

W3C Validator

您只需指定网站地址或复制粘贴源代码即可查看。

除了每个人的喜好之外,您还可以确保自己得到“统治者”的测试。 (在谈论WWW时,不要知道怎么说)。

答案 4 :(得分:0)

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

你可以在label-tag中使用<span class="labelHead"></span> <span class="labelDescription"></span>,但我不推荐它。

最好是写<h3>...</h3><label for="...">...</label><input..

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