L'attribut de nom est obsolète, quel est le comportement correct lorsqu'il s'agit d'ancres?


18

Lors du test de mon code à l'aide du validateur w3 html5 , j'obtiens ce message d'avertissement:

Avertissement : l' nameattribut est obsolète. Pensez idplutôt à mettre un attribut sur le conteneur le plus proche.

Des questions):

  • Que signifie le conteneur le plus proche?
  • Est vide <a>maintenant obsolète?
  • Dois-je utiliser à la idplace de name?

Réponses:


9

[A] es balises d'espace réservé vides dans leur ensemble obsolètes, et les ancres peuvent simplement pointer vers n'importe quel élément avec un id à la place?

Je préfère déplacer les utilisateurs vers les balises de titre (suivant le comportement par défaut de MediaWiki) où des liens sur la page sont nécessaires, mais oui, vous pouvez adresser l'ID de n'importe quel élément.


17

Si vous devez faire basculer les utilisateurs vers des liens sur la page, également appelés identificateurs de fragment , vous pouvez définir l' idattribut (qui est utilisé pour plus que de simples identifiants de frag ) sur n'importe quel élément. Utilisez ensuite l'habituel #dans l'URL d'un hrefattribut d'un aélément. Voici un exemple:

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

Lorsque j'écris mes propres pages, j'aime donner un idà chaque <section>balise (HTML5), même si je n'ai pas l'intention de l'utiliser. La valeur de idest une version conviviale de l'URL du contenu de son en-tête. Vous pouvez obtenir le même effet en l'attribuant idà un <h1>, etc.

Enfin, les <a>balises vides ne sont pas obsolètes, comme indiqué dans la spécification HTML5 :

Si l' aélément n'a pas d' hrefattribut, alors l'élément représente un espace réservé pour l'endroit où un lien aurait autrement pu être placé…

En outre, il en va de même pour les areaéléments :

L' hrefattribut on aet les areaéléments ne sont pas requis; lorsque ces éléments n'ont pas d' hrefattributs, ils ne créent pas d'hyperliens.


2

Pour HTML5, l' nameattribut est désormais obsolète, ce qui signifie qu'il doit être utilisé idà la place de name. Sinon, tout le reste est le même.

<a> n'est PAS obsolète.


Bien que cette réponse soit bonne, un lien vers la documentation ou un article expliquant la dépréciation le rendrait encore meilleur.
Stephen Ostermiller

1
Plus précisément, c'est l' nameattribut sur l' élément d' ancrage qui est obsolète / obsolète. L' nameattribut est toujours parfaitement valide (et requis) sur d'autres éléments.
MrWhite
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.