带'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类型),必须遵循以下处理模型来确定文档的指定部分是什么。

  • 解析URL,并让fragid成为URL的<fragment>组件。
  • 如果fragid是空字符串,则文档的指示部分是文档的顶部。
  • 如果DOM中有一个元素的ID与fragid完全相同,那么树中第一个这样的元素就是文档的指示部分; 在这里停止算法。
  • 如果在DOM中有一个名称属性的值与fragid完全相同的元素,那么树中第一个这样的元素就是文档的指示部分; 在这里停止算法。
  • 否则,文档中没有指示的部分。
  • 因此,它会查找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来处理该对象。

    链接地址: http://www.djcxy.com/p/2555.html

    上一篇: HTML Anchors with 'name' or 'id'?

    下一篇: Space Before Closing Slash?