1. ホーム
  2. html

[解決済み] HTMLアンカーは'name'と'id'のどちらで作成するのが良いですか?

2022-03-18 03:52:48

質問

ウェブページのある部分を"で参照したい場合。 http://example.com/#foo メソッドを使用する必要があります。

<h1><a name="foo"/>Foo Title</h1>

または

<h1 id="foo">Foo Title</h1>

どちらも機能しますが、同等なのでしょうか、それとも意味上の違いがあるのでしょうか?

どのように解決するのですか?

HTML5仕様によると 5.9.8 フラグメント識別子への遷移 :

HTML文書(およびtext/html MIMEタイプ)では、指示された部分が何であるかを判断するために、以下の処理モデルに従わなければなりません。

  1. URLを解析し、URLの構成要素である<fragment>をfragidとする。
  2. fragidが空文字列の場合、指示された部分がドキュメントの先頭となる。
  3. DOM内にfragidと正確に等しいIDを持つ要素がある場合、ツリー順で最初のそのような要素がドキュメントの指示された部分であり、ここでアルゴリズムを停止する。
  4. もし a DOM 内の name 属性の値が fragid と正確に等しい要素を持つ場合、そのような要素のツリー順の先頭がドキュメントの示された部分となります; ここでアルゴリズムを停止します。
  5. そうでなければ、文書に指示された部分は存在しない。

ということで、以下のように検索されます。 id="foo" を実行し、その後に name="foo"

Edit: @hsivonen さんのご指摘の通り、HTML5 では a 要素にはname属性がありません。 しかし、上記のルールは他の名前付き要素にも適用されます。