El atributo de nombre está obsoleto, ¿cuál es el comportamiento correcto cuando se trata de anclas?

18

Al probar mi código usando el validador w3 html5 , recibo este mensaje de advertencia:

Advertencia : el nameatributo está obsoleto. Considere colocar un idatributo en el contenedor más cercano.

Pregunta (s):

  • ¿Qué significa el contenedor más cercano?
  • ¿Está vacío <a>ahora en desuso?
  • ¿Debo usar en idlugar de name?
Kzqai
fuente

Respuestas:

9

[A] re etiquetas de marcador de posición vacías como un todo en desuso, y las anclas simplemente pueden apuntar a cualquier elemento con una identificación?

Prefiero pasar a los usuarios a las etiquetas de encabezado (siguiendo el comportamiento predeterminado de MediaWiki) donde se necesitan enlaces en la página, pero sí, podría abordar la ID de cualquier elemento.

danlefree
fuente
17

Si necesita saltar a los usuarios a enlaces en la página, también conocidos como identificadores de fragmentos , puede establecer el idatributo (que se usa para algo más que solo identificadores de fragmentos ) en cualquier elemento. Luego use lo habitual #en la URL de un hrefatributo de un aelemento. Aquí hay un ejemplo:

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

Cuando escribo mis propias páginas, me gusta dar un ida cada <section>etiqueta (HTML5), incluso si no planeo usarla. El valor de ides una versión compatible con URL del contenido de su encabezado. Puede lograr el mismo efecto asignando el mismo ida un <h1>, etc.

Por último, las <a>etiquetas vacías no están en desuso, como se indica en la especificación HTML5 :

Si el aelemento no tiene ningún hrefatributo, entonces el elemento representa un marcador de posición para el lugar donde se podría haber colocado un enlace ...

Además, lo mismo se aplica para los areaelementos :

El hrefatributo en ay areaelementos no es obligatorio; cuando esos elementos no tienen hrefatributos, no crean hipervínculos.

chharvey
fuente
2

Para HTML5, el nameatributo ahora está en desuso, por lo que eso significa usarlo iden lugar de name. De lo contrario, todo lo demás es igual.

<a> NO está en desuso.

Sean Tank Garvey
fuente
Si bien esta respuesta es buena, un enlace a la documentación o un artículo que explique la depreciación lo haría aún mejor.
Stephen Ostermiller
1
Específicamente, es el nameatributo en el elemento de anclaje que está en desuso / obsoleto. El nameatributo sigue siendo perfectamente válido (y obligatorio) en otros elementos.
MrWhite