带'name'或'id'的HTML锚点?
当有人想用“ 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类型),必须遵循以下处理模型来确定文档的指定部分是什么。
因此,它会查找id="foo"
,然后将按照name="foo"
编辑:正如@hsivonen指出的,在HTML5中, a
元素没有名称属性。 但是,上述规则仍适用于其他指定元素。
你不应该使用<h1><a name="foo"/>Foo Title</h1>
在HTML中的任何味道担任text/html
,因为XML空元素语法不支持text/html
。 但是, <h1><a name="foo">Foo Title</a></h1>
在HTML4中可以。 目前草拟的HTML5无效。
<h1 id="foo">Foo Title</h1>
在HTML4和HTML5中都可以。 这在Netscape 4中不起作用,但您可能会使用其他一些在Netscape 4中不起作用的功能。
我不得不说,如果你要链接到页面中的那个区域......比如page.html#foo和Foo Title不是你应该使用的链接:
<h1 id="foo">Foo Title</h1>
如果您在其周围放置<a>
引用,则标题将受到您网站中<a>
特定CSS的影响。 这只是额外的标记,你不应该需要它。 它强烈建议您在标题上放置一个id,不仅可以更好地形成标题,还可以让您使用Javascript或CSS来处理该对象。