我想知道以下哪两个命令在HTML中是语义正确的:
1. <h1><a>Header</a></h1>
2. <a><h1>Header</h1></a>
答案 0 :(得分:22)
<h1><a>Header</a></h1>
<h1>
是一个块级元素而<a>
不是,在语法上无效的HTML在内联元素中有块级元素(至少在HTML5之前),这是另一种方式
答案 1 :(得分:9)
关于重复问题的答案比我的好:https://stackoverflow.com/a/7023551/20578
但是,对于后代:
从语义上讲,没有区别。请记住,“语义”只是意味着“与意义相关”,而意义只是人类之间达成的共识(因为计算机本身并没有意义,这是人类的大脑)。没有人有时间同意这些几乎相同的选项中的一个意味着与另一个不同的东西:)
令人惊讶的是,它们实际上也是有效的,因为当前的HTML规范,因为<a>
的内容模型被定义为“transparent”,即与其父级相同。 / p>
请参阅:
和
(假设<a>
的父母可以<h1>
作为其子女)
但是,它在以前的HTML版本中无效:
答案 2 :(得分:3)
从语义角度看:两者(或两者都没有)。
(从结构的角度来看,OTOH,在HTML 5之前,一个锚不能包含一个标题,并且由于浏览器不是所有HTML 5都能够,你应该尽可能避免构造的新形式)
如果您要创建链接目标,则<h1 id="target_name">
首选<h1><a name="target_name">
。
如果你正在创建一个超链接,那么从语义的角度来看,在其他地方的页面链接上拥有最重要的标题是有点可疑的。
答案 3 :(得分:1)
我会说<h1><a>
,因为<h*>
是块元素而<a>
是内联元素,所以将内联元素保留在 div中似乎更自然阻止,而不是相反。
答案 4 :(得分:1)
标题应该是我认为的第一个但是我怀疑搜索引擎真的会想到它们是什么样的方式,H1内部对我来说似乎更干净......
答案 5 :(得分:1)
由于h1不直接对应于可视对象,因此它们都是正确的。