当想要使用 “ http://example.com/#foo
” 方法引用网页的某些部分时,应该使用
<h1><a name="foo"/>Foo Title</h1>
要么
<h1 id="foo">Foo Title</h1>
他们都工作,但他们是平等的,还是他们有语义差异?
根据 HTML 5 规范, 5.9.8 导航到片段标识符 :
对于 HTML 文档(以及 text / html MIME 类型),必须遵循以下处理模型以确定文档的指示部分。
- 解析 URL,并将 fragid 作为 URL 的
组件。 - 如果 fragid 是空字符串,则文档的指示部分是文档的顶部。
- 如果 DOM 中的元素具有完全等于 fragid 的 ID,则树顺序中的第一个这样的元素是文档的指示部分; 在这里停止算法。
- 如果 DOM 中有一个元素,其 name 属性的值与 fragid 完全相等,那么树顺序中的第一个元素就是文档的指示部分; 在这里停止算法。
- 否则,文档中没有指明的部分。
所以,它将寻找id="foo"
,然后将跟随name="foo"
编辑:正如 @hsivonen 所指出的,在 HTML5 中, a
元素没有 name 属性。但是,上述规则仍适用于其他命名元素。
你不应该使用<h1><a name="foo"/>Foo Title</h1>
在 HTML 中的任何味道担任text/html
,因为 XML 空元素语法不支持text/html
。但是, <h1><a name="foo">Foo Title</a></h1>
在 HTML4 中没问题。它在当前草拟的 HTML5 中无效。
HTML4 和 HTML5 中的<h1 id="foo">Foo Title</h1>
都可以。这在 Netscape 4 中不起作用,但你可能会使用其他一些在 Netscape 4 中不起作用的功能。
我不得不说你是否要链接到页面中的那个区域... 比如 page.html#foo 和 Foo Title 不是你应该使用的链接:
<h1 id="foo">Foo Title</h1>
如果您改为在其周围添加<a>
引用,那么您的标题将受到您网站中<a>
特定 CSS 的影响。它只是额外的标记,你不应该需要它。我强烈建议在标题上放置一个 id,它不仅形成得更好,而且它允许你在 Javascript 或 CSS 中寻址该对象。