另一个标签可以在HTML 5标题内(即h1,h2,h3等......)吗?

Sha*_*aoz 19 html html5 w3c

我不确定HTML 5中有关标题的约定,但我想知道我是否可以添加<small>a <h3>,像这样(这可以应用于任何标题标记内的任何标记):

<h3>Payment details <small>(this is your default card)</small></h3>
Run Code Online (Sandbox Code Playgroud)

非常感谢

Ian*_*ley 15

是的,该标记验证.您可以在http://validator.w3.org/自行查看.

HTML5需要注意的是对块级元素概念的改变:https://developer.mozilla.org/en/HTML/Block-level_elements


pla*_*nes 6

我不认为规范中对此有任何限制.只有Void元素不能有孩子.请参阅http://dev.w3.org/html5/markup/syntax.html#void-element

虽然H1,H2,H3等通常会以单一尺寸呈现,而对于像"(这是您的默认卡片)"这样的子标题,您可能会使用较低的H,例如H4.

  • +1用于建议用户使用_lower_ heading标记而不是<small>标记.您甚至可以将两个标题标记包装在<hgroup>中 (4认同)
  • @planetjones:我不认为这是正确的.例如`<H1> BLA <H2> BLA </ H2> </ H1>`不验证,因为 "报头不能是另一个报头的子". (3认同)

icy*_*com 5

标题元素的规格:

说它有分阶段内容模型:

Content model:
    Phrasing content.
Run Code Online (Sandbox Code Playgroud)

查看分阶段内容模型的部分规范:

它说:

注意:大多数归类为短语内容的元素只能包含自身归类为短语内容的元素,而不包含任何流内容.

除此之外,你不能将标题放在另一个标题中 - 这是来自W3C验证器:

Error Line 1, Column 23: Heading cannot be a child of another heading.

<!DOCTYPE html><h1><h2></h2></h1>
Run Code Online (Sandbox Code Playgroud)

虽然我在规范中找不到它明确说明的内容,但是有些限制看似相当具体.这可能会产生一些非常奇怪的行为,例如上面的HTML实际上会被解析为

<h1></h1><h2></h2>
Run Code Online (Sandbox Code Playgroud)

例如,请参阅此SOQ,了解它可能导致的间接问题的示例:

以防万一有人碰到这个......