回答:
HTML 5仕様によると、5.9.8フラグメント識別子への移動:
HTMLドキュメント(およびtext / html MIMEタイプ)の場合、次の処理モデルに従って、ドキュメントの指定された部分が何かを判断する必要があります。
- URLを解析し、fragidをURLの<fragment>コンポーネントにします。
- fragidが空の文字列の場合、ドキュメントの指定された部分がドキュメントの先頭になります。
- fragidと完全に等しいIDを持つ要素がDOMにある場合、ツリー順で最初のそのような要素はドキュメントの指定された部分です。ここでアルゴリズムを停止します。
- DOM内に、値がfragidと完全に等しいname属性を持つa要素がある場合、ツリー順で最初のそのような要素は、ドキュメントの指定された部分です。ここでアルゴリズムを停止します。
- それ以外の場合、ドキュメントの指定された部分はありません。
したがって、それはを探しid="foo"
、次に従いますname="foo"
編集:@hsivonenで指摘されているように、HTML5ではa
要素にname属性がありません。ただし、上記のルールは他の名前付き要素にも適用されます。
<h1 id="foo">Foo Title</h1>
はIE6でも動作し、HTML 4.01仕様の
name="foo"
とa id="foo"
(ページ内の順序に関係なく)を含むHTML5ドキュメントでは、ChromeとFirefoxはにジャンプしますがid
、IE(11でテスト済み)とEdge name
空のXML構文はでサポートされていないため、<h1><a name="foo"/>Foo Title</h1>
として機能するHTMLで使用しtext/html
ないでくださいtext/html
。ただし、<h1><a name="foo">Foo Title</a></h1>
HTML4 では問題ありません。現在ドラフトされているHTML5では無効です。
<h1 id="foo">Foo Title</h1>
HTML4とHTML5のどちらでも問題ありません。これはNetscape 4では機能しませんが、おそらくNetscape 4では機能しない他の多数の機能を使用することになります。
id
sをname
アンカーのように扱うことがわかりました。テスト済み:Chrome 6、Firefox 1.5、IE6、Opera 8.02、Safari 3.1.2、Netscape 7.2、Lynx 2.24、およびモバイルブラウザー:Android 2.2、Chrome 26、Dolphin 9.3、Firefox 19、IE10、Safari 4、およびOpera Mini 5.1。:target
あなたがページのその領域にリンクするつもりなら... page.html#fooのように、そしてFoo Titleはあなたが使うべきリンクではないと言っておく必要があります:
<h1 id="foo">Foo Title</h1>
代わりに<a>
参照を配置すると、見出しは<a>
サイト内の特定のCSSの影響を受けます。これは追加のマークアップであり、必要ありません。見出しにIDを配置することを強くお勧めします。IDを形成するだけでなく、JavaScriptまたはCSSでそのオブジェクトに対応できます。
ウィキペディアはこの機能を次のように多用しています。
<a href="#History">[...]</a>
<span class="mw-headline" id="History">History</span>
ウィキペディアはすべての人のために機能しているので、このフォームをそのまま使用しても安心です。
また、忘れずに、これをスパンだけでなく、divまたはテーブルセルでも使用でき、要素の:target疑似クラスにアクセスできるようになります。太字のテキストのように、幅を変更しないように注意してください。これにより、コンテンツが移動し、邪魔になります。
名前付きアンカー-私の投票は回避することです:
a {color:red}
提案:スタイルを設定すると、<a href>リンクと<a name>フラグメントの両方に色が付けられます。これを回避するには、疑似クラスa:link {color:red]}
または属性セレクターを使用しますa:not([href]) {color:red;}
<a name="heading1"></a> ... document.html#heading1
、IDを設定せずにフラグメントリンクとして何かを指定できると非常に便利です。これは、IDがページ上の別のIDと競合する可能性があるためです。name
HTML5に属性を設定しなかったのは残念です。
<h1 id="foo">Foo Title</h1>
使用すべきものです。リンクが必要でない限り、アンカーを使用しないでください。
JavaScriptユーザーに向けて:すべてのIDはwindowの下でグローバル変数になります。
<h1 id="foo">Foo Title</h1>
JSグローバルを作成しました。
window.foo
値はwindow.foo
なりますHTMLElement
ためh1
。
id
属性で使用されているすべての値が安全であることを保証できない場合は、以下を守ることをお勧めしますname
。
<h1 name="foo">Foo Title</h1>
window
。たとえば<div id="open"></div>
、関数を上書きしませんwindow.open
。
意味上の違いはありません。標準の傾向はでid
はなくを使用する方向にありますname
。ただし、name
場合によっては好む可能性のある違いがあります。HTML 4.01仕様では、次のヒントが提供されています。
id
または使用しますかname
?作成者は、アンカー名を使用するid
かname
、アンカー名に使用するかを決定するときに、次の問題を考慮する必要があります。
id
Safari for iOS 5でアンカーを機能させることができなかったので、'09年にすでに「本当に古い」ブラウザだけではありません。name
サイトをiPadで正しく機能させるには、s を追加する必要がありました。これは今では修正されているかもしれません。私はチェックするiOS 6デバイスを所有していません。
id
アンカーは普遍的に機能しているようです。場合はこの単純な例では、あなたの携帯電話上では動作しません、私は、デバイスのアクセシビリティ設定を確認します。(@deathApril Wikipediaモバイルサイトには、URLフラグメントを効果的に無視させるJavascriptがあります。)
IDメソッドは古いブラウザでは機能せず、アンカー名メソッドは新しいHTMLバージョンで非推奨になります...私はIDを使用します。
マークアップに関する単なる観察以前のバージョンのHTMLのマークアップフォームは、アンカーポイントを提供していました。id属性を使用するHTML5のマークアップフォームは、ほとんど同じですが、識別するための要素を必要とします。ほとんどすべての要素は通常、コンテンツを含むことが期待されています。
たとえば、空のスパンまたはdivを使用することもできますが、この使用法では、外観とにおいが悪化します。
この目的のために、wbr要素を使用することが考えられます。wbrには空のコンテンツモデルがあり、改行が可能であることを単に宣言します。これは、まだマークアップタグのやや無意味な使用法ですが、無意味なドキュメント分割や空のテキストスパンよりもはるかに少ないです。
HTML 5では、id=""
属性は要素の一意の識別子を定義します。これは、フラグメントリンクのアンカーでもあります。以前のHTML標準でname=""
は、<a>
要素の属性はフラグメントリンクのアンカーを定義していました。私は次のようなものをお勧めします:属性の<a name="foo" id="foo"></a><h1>Foo Title</h1>
サポートid=""
は少しむらがあるため(すべての主要なブラウザーの最新リリースでサポートされている場合でも、リリースが数年以内のものではありません[そして、何かを壊さないことが最善ですする正当な理由がない場合])。互換性があり、リンクされた要素のスタイルはありません。終了</a>はまだ要素の外側にあるためですが、現在のすべての標準で引き続き有効です。
要素のname=""
およびid=""
属性が<a>
同じであることを確認してください。
name
必要とされたアンカータグの属性。に属性を配置するhN
か、機能span
しませんでした。
「名前付きアンカー」の概念全体では、定義によりname属性を使用します。名前の使用に固執する必要がありますが、ID属性は一部のjavascriptの状況で便利な場合があります。
コメントのように、両方を使って賭けをヘッジすることができます。
http://example.com#foo
(つまり/の前に#がない)