回答:
どちらのバージョンも正しいです。それらの間の最大の違い<h1><a>..</a></h1>
は、タイトルのテキストのみの場合にクリック可能になるということです。
の<a>
周りに配置<h1>
し、css display
プロパティがblock
(デフォルトでは)である場合、ブロック全体(の高さ<h1>
およびコンテナが<h1>
存在するコンテナの幅の100%)をクリックできます。
従来、インライン要素の内部にブロック要素を配置することはできませんでしたが、これはHTML5には当てはまりません。とは<h1><a>..</a></h1>
いえ、このアプローチはもっと慣習的だと思います。
ヘッダーにアンカーを配置<a id="my-anchor"><h1>..</h1></a>
する場合は、id
またはname
属性を次のように使用するよりも良い方法です:<h1 id="my-anchor">..</h1>
または<h1 name="my-anchor">..</h1>
<a>
いる場合、ホバー状態を共有するように両方を同じようにラップするほうが視覚的に魅力的です:jsfiddle.net/jjyLemq2
<h1><a>..</a></h1>
また<a><h1>..</h1></a>
、スタイルシートがレンダリングに影響しない場合は、常にほぼ同じように動作します。ほぼ、しかし完全ではありません。タブキーを使用して移動するか、リンクにフォーカスすると、ほとんどのブラウザでリンクの周りに「フォーカス長方形」が表示されます。の場合<h1><a>..</a></h1>
、この長方形はリンクテキストのみを囲んでいます。の場合<a><h1>..</h1></a>
、マークアップによってa
要素がレンダリングのブロック要素になり、デフォルトで幅が100%になるため、長方形は使用可能な水平方向のスペースを横切って広がります。
以下は、フォーカス<a href=foo><h1>link</h1></a>
がChromeによってどのようにレンダリングされるかを示しています。
これは、たとえばリンクの背景色を設定するなどして要素のスタイルを設定すると、効果が同様に異なることを意味します。
歴史的に<a><h1>..</h1></a>
は、HTML 2.0では無効であると宣言され、その後のHTML仕様も同様に続きましたが、HTML5はこれを変更し、有効であると宣言しています。正式な定義はブラウザに影響を与えず、バリデータのみに影響を与えました。ただし、一部のユーザーエージェント(通常のブラウザーではないが、特殊なHTMLレンダラー、データエクストラクター、コンバーターなど)<a><h1>..</h1></a>
は、仕様で許可されていないため、適切に処理でき ない可能性があります。
見出しや見出しのテキストをリンクにすることには、めったにない理由があります。(それはほとんど非論理的で使い勝手が悪いためです。)しかし、たとえばvs を使用して、見出し(または見出しのテキスト)をリンクの潜在的な宛先にすると、同様の質問がしばしば発生します。同様の考慮事項がこれに適用されます(どちらの作業でも、後者は要素をブロックにするため、違いがある可能性があります。HTML5以前では、前者のみが正式に許可されています)。ただし、それに加えて、どちらの方法も古くなっており、heading要素で属性を直接使用することが推奨されています。<h2><a name=foo>...</a></h2>
<a name=foo><h2>...</h2></a>
a
id
<h2 id=foo>...</h2>
"There is seldom a good reason to make a heading or text in a heading a link"
->私はそれについて同意しなければなりません。見出しをリンクにする理由はたくさんあります。例:ブログ投稿のリスト。各タイトルもリンクです。またはSO自体をチェックアウトh3
します。フロントページのすべての質問は要素であり、リンクもあります。とにかく、良い説明;)
H1要素はブロックレベルの要素であり、アンカーはインライン要素です。ブロックレベル要素内にインライン要素を含めることはできますが、その逆はできません。ボックスモデルとHTML仕様を考えると、これは理にかなっています。
結論として、最良の方法は次のとおりです。
<h1><a href="#">Link</a></h1>
また、スタイルの階層にも違いがあります。として持っている場合<h1><a href="#">Heading here</a></h1>
、アンカーのスタイルはh1要素のスタイルを無効にします。例:
a {color:red;font-size:30px;line-height:30px;}
オーバールール
h1 {color:blue;font-size:40px;line-height:40px;}