在HTML中,<a/>和<h1/>应该如何嵌套?

13

3
一般来说,内联元素比如锚点标签不应该包含块级元素。除了在 HTML5 之前是无效的之外,至少在我的看法中,这样做也不“合适”。 - Shadow The Spring Wizard
3个回答

25
在HTML 4.01 和 XHTML 1.1 及早期版本中:
  • h1可以包含一个a
  • a不能包含一个h1
因此,<h1><a>…</a></h1> 在HTML 5 草案中:
  • h1可以包含一个a
  • a可以包含一个h1(但仅当a出现在h1允许的位置——请参见本答案的评论)
因此,两者都可以,但浏览器支持可能有所不同(这就是在前沿生活的方式)。

4
如果一个a元素的父级元素允许包含h1元素,那么这个a元素就可以包含一个h1元素。(因为a元素的内容模型是透明的;它继承了父级元素的内容模型:http://www.w3.org/TR/html5/content-models.html#transparent) - T.J. Crowder
@T.J. 我认为这一点对于正确的答案至关重要。@David,你觉得这是否正确? - Armand
3
我想这是一个重要的观点;我只是在强调David已经很好的回答。基本上,你不能把h1放在span内的a中(span > a > h1),因为span不能包含h1。但是,例如,你可以把h1放在body(body > a > h1)或div(div > a > h1)内的a中,我猜这是大多数人想要的。 - T.J. Crowder

3

这是正确答案:

<h1><a href="www.example.com">Example!</a></h1>

@Alison 没问题,感谢您的评论,请使用正确答案关闭问题 :) - JAiro
我认为现在必须选择 David 的 - 它更加完整。 - Armand

2

HTML4, XHTML

<h1><a href="">Text</a></h1>

HTML5

<h1><a href="">Text</a></h1>
<a href=""><h1>Text</h1></a>

由于锚点标签被设为“块级元素”,在HTML5中这是可以接受的。

有关块级元素和行内元素标签的一些好信息可以在http://www.webdesignfromscratch.com/html-css/css-block-and-inline/找到。


似乎在锚标签的状态上,@David Dorward / @T.J. Crowder存在一些分歧。 - Armand
@Alison:我不会说有任何“不同意见”。 :-) @Scott: a 不是块级元素。 - T.J. Crowder
好的,我来重新表述一下。在HTML5中,您可以将块级元素包含在a中,而在HTML4中则不行。 - user527892
嘿,我想我明白了,但现在我越来越困惑了。 - Armand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接