Web標準でリンク(<a>タグ)と見出し(<h1>タグ)を混在させる方法


95

Web標準に従って見出し1のリンクを作成するための正しいコードは何ですか?

それは...ですか

<h1><a href="http://stackoverflow.com"> stackoverflow </a></h1>

または

<a href="http://stackoverflow.com"><h1> stackoverflow </h1></a>

ありがとう

回答:


143

ウェブ標準によると、ブロック要素をインライン要素に入れることは許可されていません。

h1ブロック要素とaインライン要素であり、正しい方法です。

<h1><a href="#">This is a title</a></h1>

詳細については、こちらのリンクをご覧ください:w3視覚フォーマットモデル

しかし、HTML5で、ブロックレベル要素(のようなラップする有効であることを例外があるdivpまたはh*アンカータグで)が。アンカー以外のインライン要素でブロックレベル要素をラップすることは、依然として標準に反しています。


19
HTLM5ではこれが変更されました。どちらの例も検証します- validator.w3.orgを
Atadj 2013年

良いですね。これは簡単に間違いを犯しますが、どちらも論理的には当然ながらインライン要素はブロックレベル要素の子孫である必要があります。
bigmadwolf 2014

@pushplaybang-ヘッダーの一部のみがクリック可能であると想定されていない限り、ヘッダーをリンクでラップする方がセマンティックだと思います(そのためのユースケースは考えられません)。とにかく、html5で両方がサポートされているのは素晴らしいことです。
aaaaaa

47

HTML5がこの件名を更新しました:別の質問で述べたように、ブロックレベルの要素をAでラップしても問題ありません:https : //stackoverflow.com/a/9782054/674965そしてここ:http : //davidwalsh.name/html5-要素リンク


8
この回答は、受け入れられた回答よりもはるかに関連性が高くなりました
Josh Davenport

受け入れ答えは、それを反映するように更新されました@JoshDavenport
ダン・klasson

2

HTML5では、ブロックレベルの要素をリンクタグでラップできます。ただし、古いブラウザではバグが表示される場合があります。Firefox 3.6.18でこれに遭遇し、コードにmoz-rs-heading = ""が挿入されました。したがって、私のスタイルは壊れました。回避策が気になる場合は、リンクタグをdivでラップできます。以下は、追加コードが機能する理由のより良い説明を提供しますhttp://oli.jp/2009/html5-block-level-links/


1

a > h1 テキストの選択が困難になります

テキスト選択の問題

どちらもHTML5では完全に有効であるため、使用することをお勧めします h1 > a

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.