Name attribute is obsolete, what is the correct behavior when dealing with anchors?
If you need to jump users to in-page links, also known as fragment identifiers, you can set the id
attribute (which is used for more than just frag ids) on any element. Then use the usual #
in the URL of a href
attribute of an a
element. Here’s an example:
<body>
<p>Despite the many
<a href="#benefits-of-gum-chewing">benefits</a>
you may experience while chewing gum, there are also many drawbacks,
especially with
<a href="http://www.example.org/sugar.html#cons">non-sugarless</a>
gum.</p>
...
<section id="benefits-of-gum-chewing">
<h1>Benefits of Gum Chewing</h1>
...
</section>
</body>
When writing my own pages, I like to give an id
to each <section>
tag (HTML5), even if I don’t plan on using it. The value of the id
is a URL-friendly version of its heading’s content. You can achieve the same effect by assigning the same id
to an <h1>
, etc.
Lastly, empty <a>
tags are not deprecated, as indicated in the HTML5 spec:
If the
a
element has nohref
attribute, then the element represents a placeholder for where a link might otherwise have been placed …
Additionally the same applies for area
elements:
The
href
attribute ona
andarea
elements is not required; when those elements do not havehref
attributes they do not create hyperlinks.
[A]re empty placeholder tags as a whole deprecated, and anchors can simply point to any element with an id instead?
I prefer to jump users to heading tags (following MediaWiki's default behavior) where in-page links are needed, but yes, you could address the ID of any element.
For HTML5, name
attribute is now deprecated, so that means to use id
in place of name
. Otherwise, everything else is the same.
<a>
is NOT deprecated.