Should I make HTML Anchors with 'name' or 'id'?

fragment-identifier, html, hyperlink

Solution

According to the HTML 5 specification, 5.9.8 Navigating to a fragment identifier:

For HTML documents (and the text/html MIME type), the following processing model must be followed to determine what the indicated part of the document is.

- Parse the URL, and let fragid be the <fragment> component of the URL.

- If fragid is the empty string, then the indicated part of the document is the top of the document.

- If there is an element in the DOM that has an ID exactly equal to fragid, then the first such element in tree order is the indicated part of the document; stop the algorithm here.

- If there is an a element in the DOM that has a name attribute whose value is exactly equal to fragid, then the first such element in tree order is the indicated part of the document; stop the algorithm here.

- Otherwise, there is no indicated part of the document.

So, it will look for `id="foo"`, and then will follow to `name="foo"`

Edit: As pointed out by @hsivonen, in HTML5 the `a` element has no name attribute. However, the above rules still apply to other named elements.

Problem

When one wants to refer to some part of a webpage with the "`http://example.com/#foo`" method, should one use ``` <h1><a name="foo"/>Foo Title</h1> ``` or ``` <h1 id="foo">Foo Title</h1> ``` They both work, but are they equal, or do they have semantic differences?

Original source

Related problems