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


18

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

Попередження : nameАтрибут застарілий. Поміркуйте idзамість цього атрибут на найближчому контейнері.

Питання:

  • Що означає найближчий контейнер?
  • <a>Зараз порожній застарілий?
  • Чи слід використовувати idзамість name?

Відповіді:


9

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

Я вважаю за краще стрибати користувачів до тегів заголовків (дотримуючись стандартної поведінки MediaWiki) там, де потрібні посилання на сторінці, але так, ви можете вказати ідентифікатор будь-якого елемента.


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атрибутів, вони не створюють гіперпосилання.


2

Для HTML5 nameатрибут тепер застарілий, так що це означає використовувати idзамість name. Інакше все інше те саме.

<a> НЕ застаріло.


Хоча ця відповідь хороша, посилання на документацію чи статтю, що пояснює застаріння, зробить її ще кращою.
Стівен Остерміллер

1
Зокрема, nameатрибут елементу якоря є застарілим / застарілим. nameАтрибут ще цілком допустимо (і обов'язково) на інших елементах.
MrWhite
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.