从语义上讲,哪个更正确:一个在h2中,还是在h2中?

我坚持决定哪个使用,因为两者似乎工作。

我应该在<h2>元素内放置链接<a>吗?

或者相反呢?

什么是正确的标准?

如果您使用的是HTML5,只能在<a>元素中放置<h2>元素,而HTML5 允许<a>元素中的任何其他元素 。 以前的规格(或目前的规格,但是你想看看他们)从来没有允许这个。

通常的做法是将<a>放在<h2> 。 这个工作,一直工作,并且一直是在HTML5之前做的标题链接的唯一有效的方法,因为链接指的是该标题中的文本。 除非<h2>是一些更复杂的结构,它作为一个整体的超链接,否则很less需要将<h2>放在<a>

另外它的function不一样,有一个很大的区别。

如果将<h2>放入<a>标题的整个块(例如行)将像链接一样工作。

但是,如果将<a>放入<h2> ,则只有可见的文本才能用作链接。 (你可以用光标改变来testing它)

<h2>是块级别, <a>不是,所以<h2>可以包含<a>但不能<a>

http://htmlhelp.com/reference/html40/block.html

答案是,这取决于…

从W3C网站,更具体地说,在HTML5语义页面中 ,显然h2元素(作为所有其他标题标签)具有作为内容模型“短语内容”。

现在,在Phrasing内容链接之后 ,您将得到以下描述:

表述内容是文档的文本,以及在段落内标记文本的元素。 短语内容的运行形成段落。

在下面的列表中你有这样的措辞内容包括:

一个(如果它只包含短语内容)

所以,如果a标签只包含短语内容,HTML5允许它被包含在一个h2标签中。

文章级别的语义页面描述了a元素内容模型如下:

透明,但不得有互动内容后裔。

在透明链接之后 ,在描述的最后find以下内容:

当透明元素没有父项时,则其内容模型的“透明”部分必须被视为接受任何stream内容。

由于在h2标签描述中说:

可以使用此元素的上下文:预期stream内容的位置。

一个h2标签可能被认为是stream量内容。

因此,如果a标签没有父项,那么在HTML5中,它必须被视为接受任何stream内容,包括h2标签。

HTML允许<a>标签内的东西

我有这个…

 <header> <a href="/home"> <h1>Main heading</h1> <h2>Sub heading</h2> </a> </header> 

它适用于我。

包括子标题在内的整个标题文本是可按需要点击的。 我不知道更好的方式来做到这一点与HTML 5。

W3的W3C 规范说,其允许的父元素是任何可以包含stream元素或hgroups的东西。 可以包含短语stream元素的允许父元素的规范 。 h2可以包含短语内容,一个可以包含短语或stream量内容,所以根据规范,似乎任何一个都是允许的。

既然你包含了语义标签,我假设你对哪个“看起来”更好也感兴趣。 就我而言,因为我不能想到什么时候我想要一个锚点跨越一个标题加上其他的内容,但是我可以想象,当一个页眉应该包含一个锚点加上其他内容的时候,内部h2似乎是最好的路线去。