Атрибут name устарел, каково правильное поведение при работе с якорями?

18

При тестировании моего кода с использованием валидатора w3 html5 я получаю это предупреждение:

Предупреждение : nameатрибут устарел. Попробуйте idвместо этого поместить атрибут в ближайший контейнер.

Вопросов):

  • Что означает ближайший контейнер?
  • Пусто <a>сейчас устарело?
  • Должен ли я использовать idвместо name?
Kzqai
источник

Ответы:

9

[A] пустые теги-заполнители в целом устарели, и якоря могут просто указывать на любой элемент с идентификатором?

Я предпочитаю переходить от пользователей к заголовкам тегов (следуя стандартному поведению MediaWiki), где необходимы внутристраничные ссылки, но да, вы можете указать идентификатор любого элемента.

danlefree
источник
17

Если вам нужно перейти к ссылкам на странице, также известным как идентификаторы фрагментов , вы можете установить idатрибут (который используется не только для фрагментов ) любого элемента. Затем используйте обычный #URL-адрес hrefатрибутаa элемента. Вот пример:

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

Когда я пишу свои собственные страницы, мне нравится давать idкаждому <section>тегу (HTML5), даже если я не планирую его использовать. Значение id- это URL-версия содержимого заголовка. Вы можете добиться того же эффекта, назначив одинаковыеid его и <h1>т. Д.

Наконец, пустые <a>теги не рекомендуется использовать, как указано в спецификации HTML5 :

Если у aэлемента нет hrefатрибута, то этот элемент представляет собой заполнитель для места, где в противном случае могла бы быть размещена ссылка…

Дополнительно то же самое относится к areaэлементам :

hrefАтрибут aи areaэлементов не требуется; когда эти элементы не имеют hrefатрибутов, они не создают гиперссылки.

chharvey
источник
2

Для HTML5 nameатрибут теперь устарел, что означает использование idвместоname . В остальном все остальное тоже самое.

<a> НЕ устарел.

Шон Танк Гарви
источник
Хотя этот ответ хорош, ссылка на документацию или статью, объясняющую осуждение, сделает его еще лучше.
Стивен Остермиллер
1
В частности, это nameатрибут в элементе привязки, который устарел / устарел. nameАтрибут еще вполне допустимо (и обязательно) на других элементах.
MrWhite