Atrybut nazwy jest nieaktualny, jakie jest prawidłowe zachowanie w przypadku kotwic?

18

Podczas testowania mojego kodu za pomocą walidatora html5 w3 pojawia się następujący komunikat ostrzegawczy:

Ostrzeżenie : nameatrybut jest nieaktualny. Zastanów się nad umieszczeniem idatrybutu na najbliższym kontenerze.

Pytania):

  • Co oznacza najbliższy pojemnik?
  • Czy pusty jest <a>teraz przestarzały?
  • Czy powinienem użyć idzamiast name?
Kzqai
źródło

Odpowiedzi:

9

[A] są ponownie puste znaczniki zastępcze jako przestarzałe, a kotwice mogą po prostu wskazywać dowolny element z identyfikatorem?

Wolę przeskakiwać użytkowników do tagów nagłówków (zgodnie z domyślnym zachowaniem MediaWiki), w których potrzebne są linki na stronie, ale tak, możesz adresować identyfikator dowolnego elementu.

danlefree
źródło
17

Jeśli chcesz przeskoczyć użytkowników do linków na stronie, zwanych także identyfikatorami fragmentów , możesz ustawić idatrybut (który jest używany do więcej niż tylko identyfikatorów fragów ) dla dowolnego elementu. Następnie użyj zwykłego #adresu URL hrefatrybutu aelementu. Oto przykład:

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

Pisząc własne strony, lubię nadawać idkażdemu <section>tagowi (HTML5), nawet jeśli nie planuję go używać. Wartość idjest wersją treści nagłówka dostosowaną do adresu URL. Możesz osiągnąć ten sam efekt, przypisując to samo iddo <h1>itp.

Wreszcie puste <a>tagi nie są przestarzałe, jak wskazano w specyfikacji HTML5 :

Jeśli aelement nie ma hrefatrybutu, element reprezentuje symbol zastępczy, w którym w przeciwnym razie mógłby zostać umieszczony link…

Dodatkowo to samo dotyczy areaelementów :

hrefAtrybut ai areaelementów nie jest wymagana; gdy te elementy nie mają hrefatrybutów, nie tworzą hiperłączy.

chharvey
źródło
2

W przypadku HTML5 nameatrybut jest teraz przestarzały, więc oznacza to, że należy go używać idzamiast name. W przeciwnym razie wszystko inne jest takie samo.

<a> NIE jest przestarzałe.

Sean Tank Garvey
źródło
Chociaż ta odpowiedź jest dobra, link do dokumentacji lub artykułu wyjaśniającego deprecjację uczyniłby ją jeszcze lepszą.
Stephen Ostermiller
1
W szczególności jest to nameatrybut elementu kotwicy , który jest przestarzały / nieaktualny. nameAtrybut jest nadal w pełni aktualne (i wymagane) na inne elementy.
MrWhite