Html 语义上,哪个更正确:h2中的a,还是a中的h2?

Html 语义上,哪个更正确:h2中的a,还是a中的h2?,html,standards,semantics,Html,Standards,Semantics,我一直在决定使用哪一种,因为两者似乎都起作用 我应该在元素中放置链接吗 还是反过来 正确的标准是什么?您只能在中放置元素。以前的规范(或当前的规范,无论您如何查看它们)从未允许这样做 通常的做法是将放在中。在HTML5之前,这是唯一有效的标题链接方式,因为链接指的是标题中的文本。很少需要将放在中,除非是某个更复杂结构的一部分,该结构作为一个整体起着超链接的作用。W3C说其允许的父元素是任何可以包含流元素或hGroup的元素。允许包含短语或流元素的父元素。h2可以包含短语内容,a可以包含短语或流内

我一直在决定使用哪一种,因为两者似乎都起作用

我应该在
元素中放置链接吗

还是反过来

正确的标准是什么?

您只能在
中放置
元素。以前的规范(或当前的规范,无论您如何查看它们)从未允许这样做

通常的做法是将
放在
中。在HTML5之前,这是唯一有效的标题链接方式,因为链接指的是标题中的文本。很少需要将
放在
中,除非
是某个更复杂结构的一部分,该结构作为一个整体起着超链接的作用。

W3C说其允许的父元素是任何可以包含流元素或hGroup的元素。允许包含短语或流元素的父元素。h2可以包含短语内容,a可以包含短语或流内容,因此根据规范,两者都是允许的


既然您包含了语义标记,我想您也会对哪个“似乎”更好感兴趣。就我而言,因为我想不出什么时候我会希望一个锚横跨一个标题加上其他内容,但我可以想到很多时候,一个标题应该包含一个锚加上其他内容,内部h2似乎是最好的选择。

它的功能也不一样,有一个很大的区别

如果将
放入
中,标题的整个块(例如行)将像链接一样工作


但是,如果将
放入
中,则只有可见文本将用作链接。(你可以通过改变光标来测试它)

答案是它取决于

从W3C网站,更具体地说,在中,很明显h2元素(和所有其他标题标记一样)具有内容模型“语法内容”

现在,按照以下步骤,您将获得以下描述:

措辞内容是文档的文本,以及 在段落内级别标记该文本。一连串的措辞 内容形成段落

在下面的列表中,您的措辞内容包括:

a(如果仅包含短语内容)

因此,如果
a
标签只包含短语内容,HTML5允许它包含在
h2
标签中。

反之,对
a
元素内容模型的描述如下:

透明,但必须没有交互式内容子体

在描述的末尾,可以找到以下内容:

如果透明元素没有父元素,则其内容的一部分 必须将“透明”的模型视为接受任何 流量内容

因为在《圣经》中说:

可使用此元素的上下文: 其中流内容是预期的

h2
标记可被视为流内容

因此,如果
a
标记没有父项,则在HTML5中必须将其视为接受任何流内容,包括h2标记。

HTML允许

这对我很有用


包括副标题在内的整个标题文本都可以按我的要求单击。我不知道有什么更好的方法来处理HTML5。

这是非常主观的,但我认为
应该在
中,因为如果
的部分文本不是链接,这是必须的,但是你很少有
之外的链接。3票关闭。我可以问一下为什么吗?这怎么不是一个真正的问题@安德烈·马绍尔:这有多主观?我以为已经发布了标准?语义不是标准。既然你可以做任何一件事(至少在HTML5中),就没有技术上的理由选择一件而不是另一件。“标题具有更高的重要性”是什么意思?对不起,当我想得更多的时候,它没有任何意义。因为有额外的信息,所以投票支持你的答案,虽然它并没有真正回答语义上哪个更正确的问题。。。忘掉学究式的“有效”吧……这都是关于显示级别的。如果将a设置为display:block,则它很好,html4、xhtml1、html5。。。不管怎样。@mikeyUX:为什么你告诉我而不是OP这个?“那么,如果a标签没有父项”-没有父项什么?元素?另一个标题标签?W3C网站()的透明链接引用中报告了相同的标签。。。这是一个父元素对不起,我应该把它和上面的报价联系起来。
<header>
  <a href="/home">
    <h1>Main heading</h1>
    <h2>Sub heading</h2>
  </a>
</header>