O atributo Name está obsoleto. Qual é o comportamento correto ao lidar com âncoras?

18

Ao testar meu código usando o validador w3 html5 , recebo esta mensagem de aviso:

Aviso : O nameatributo está obsoleto. Considere colocar um idatributo no contêiner mais próximo.

Questões):

  • O que significa o contêiner mais próximo?
  • O vazio <a>agora está obsoleto?
  • Devo usar em idvez de name?
Kzqai
fonte

Respostas:

9

[As] marcas de espaço reservado vazias como um todo foram descontinuadas e as âncoras podem simplesmente apontar para qualquer elemento com um ID?

Prefiro pular os usuários para as tags de cabeçalho (seguindo o comportamento padrão do MediaWiki) onde os links in-page são necessários, mas sim, você pode endereçar o ID de qualquer elemento.

danlefree
fonte
17

Se você precisar direcionar os usuários para links in-page, também conhecidos como identificadores de fragmentos , poderá definir o idatributo (que é usado para mais do que apenas IDs de fragmentos ) em qualquer elemento. Em seguida, use o usual #na URL de um hrefatributo de um aelemento. Aqui está um exemplo:

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

Ao escrever minhas próprias páginas, gosto de atribuir um ida cada <section>tag (HTML5), mesmo que não pretenda usá-lo. O valor de idé uma versão compatível com o URL do conteúdo do cabeçalho. Você pode obter o mesmo efeito atribuindo o mesmo ida um <h1>, etc.

Por fim, as <a>tags vazias não são preteridas, conforme indicado na especificação HTML5 :

Se o aelemento não tem hrefatributo, o elemento representa um espaço reservado para onde um link poderia ter sido colocado de outra maneira…

Além disso, o mesmo se aplica aos areaelementos :

O hrefatributo on ae areaelements não é necessário; quando esses elementos não têm hrefatributos, eles não criam hiperlinks.

chharvey
fonte
2

Para HTML5, o nameatributo agora está obsoleto, o que significa usar idno lugar de name. Caso contrário, tudo o resto é o mesmo.

<a> NÃO está obsoleto.

Sean Tank Garvey
fonte
Embora essa resposta seja boa, um link para a documentação ou um artigo explicando a depreciação a tornaria ainda melhor.
Stephen Ostermiller
11
Especificamente, é o nameatributo no elemento âncora que está obsoleto / obsoleto. O nameatributo ainda é perfeitamente válido (e obrigatório) em outros elementos.
MrWhite