Das Attribut name ist veraltet. Wie verhält es sich beim Umgang mit Ankern?

18

Wenn ich meinen Code mit dem Validator w3 html5 teste , erhalte ich folgende Warnmeldung:

Warnung : Das nameAttribut ist veraltet. Stellen Sie idstattdessen ein Attribut in den nächsten Container.

Fragen):

  • Was bedeutet der nächste Container?
  • Ist <a>jetzt leer veraltet?
  • Soll ich idstatt verwenden name?
Kzqai
quelle

Antworten:

9

[A] Sind leere Platzhalter-Tags als Ganzes veraltet und können Anker stattdessen einfach auf jedes Element mit einer ID verweisen?

Ich ziehe es vor, Benutzer zu Überschriften-Tags zu springen (gemäß dem Standardverhalten von MediaWiki), wenn In-Page-Links erforderlich sind, aber ja, Sie können die ID eines beliebigen Elements adressieren.

danlefree
quelle
17

Wenn Sie Benutzer zu In-Page-Links, auch als Fragment- IDs bezeichnet , springen müssen , können Sie das idAttribut (das für mehr als nur Fragment- IDs verwendet wird ) für jedes Element festlegen . Verwenden Sie dann das Übliche #in der URL eines hrefAttributs eines aElements. Hier ist ein Beispiel:

<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>

Wenn ich meine eigenen Seiten schreibe, gebe ich gerne idjedem <section>Tag ein (HTML5), auch wenn ich nicht vorhabe, es zu verwenden. Der Wert von idist eine URL-freundliche Version des Inhalts der Überschrift. Sie können denselben Effekt erzielen, indem Sie ihn ideinem <h1>usw. zuweisen .

Schließlich werden leere <a>Tags nicht als veraltet eingestuft, wie in der HTML5-Spezifikation angegeben :

Wenn das aElement kein hrefAttribut hat, stellt das Element einen Platzhalter für die Stelle dar, an der ansonsten möglicherweise ein Link platziert worden wäre.

Gleiches gilt auch für areaElemente :

Das hrefAttribut on aund areaelements ist nicht erforderlich. Wenn diese Elemente keine hrefAttribute haben, werden keine Hyperlinks erstellt.

chharvey
quelle
2

Für HTML5 ist das nameAttribut jetzt veraltet, was bedeutet, dass es idanstelle von verwendet wird name. Ansonsten ist alles gleich.

<a> ist NICHT veraltet.

Sean Tank Garvey
quelle
Während diese Antwort gut ist, würde ein Link zur Dokumentation oder ein Artikel, in dem die Ablehnung erklärt wird, sie noch besser machen.
Stephen Ostermiller
1
Insbesondere ist es das nameAttribut auf der Ankerelement , das veraltet ist. Das nameAttribut ist für andere Elemente weiterhin gültig (und erforderlich).
MrWhite