Do not use multiple
<h1>
elements on one page
MDNの英語版では現在、上記のように「h1を複数使ってはならない」と書かれています。
これまでの仕様でも「h1要素はページに1つだけ」といった言及はされていないはずですが、なぜこのように「h1要素は1つだけ」と言われるようになったのでしょうか。
特に明確な理由が示されておらず疑問に思っています。これについて何かご存知でしたら教えて頂けると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/27 07:32

回答4件
9
以下で質問されてますが、MDNの記事についてメンテナは根拠を明確に示されてないみたいですね
https://github.com/mdn/mdn-community/discussions/232
投稿2022/10/27 11:50
編集2022/10/27 13:37総合スコア913
8
ベストアンサー
HTML Standard
これまでの仕様でも「h1要素はページに1つだけ」といった言及はされていないはずですが、
@arcxor さんがご認識の通り、HTML文書内にh1要素が複数存在しても良いとHTML Standardで規定されています。
文書は、複数のトップレベルの見出しを含めることができる:
html
1<!DOCTYPE HTML> 2<html lang=en> 3<title>Alphabetic Fruit</title> 4<h1>Apples</h1> 5<p>Pomaceous.</p> 6<h1>Bananas</h1> 7<p>Edible.</p> 8<h1>Carambola</h1> 9<p>Star.</p>
上記HTMLはW3CのValidatorで問題なく、通ります。
MDN(英語)
以下、MDN英文の日本語訳。
「アウトライン アルゴリズムの概念を含む古いバージョンの HTML 仕様では、1 つのページで複数の <h1> を使用することが許可されていました。
ただし、これはベスト プラクティスとは見なされませんでした。詳細については、ドキュメント アウトライン アルゴリズムが存在しないを参照してください。」
「古いバージョンのHTML仕様」は素直に読むと下記のいずれかと思われます。
- HTML Living Standardの古いバージョン
- HTML 5の古いバージョン
- HTML 4.01
ただ、<!DOCTYPE html>
を宣言している限りは古いバージョンを気にする必要はなく、MDNの意図は不明です。
MDN(英語)の意図は後述参照。
MDN(日本語)
MDN日本語に理由が書かれていました。
複数の <h1> を使用することは HTML の仕様では認められていますが、ベストプラクティスとは見なされていません。<h1> を 1 つだけ使用することは、スクリーンリーダーの利用者にとって有益です。
HTML の仕様には、<section> 要素で形成されるアウトラインという概念があります。もしこれが実装されれば、複数の <h1> 要素の使用が可能になり、スクリーンリーダーを含むユーザーエージェントが、セクションの中にネストされた <h1> が小見出しであると理解することができるようになります。しかし、この機能はまだ実装されていません。したがって、見出し要素を適切に使用して文書の概要を記述することが重要です。
スクリーンリーダがHTML仕様を正しく実装するまでの過渡期の暫定策として、h1要素の複数使用が推奨されていないようです。
見出しレベルの解釈
問題は見出しレベルの解釈の仕方にあると理解しています。
(1) アウトラインの概念がないUser-Agent
User-Agentは見出しレベルを「h1-h6要素」に与えられた見出しレベルで解釈します。
h1要素はトップレベルの見出しの為、同じ文書内にh1要素が複数出現することは構造的に正しくありません。
(2) アウトラインの概念があるUser-Agent
User-Agentは各々のアウトラインの中に見出しレベルがあると解釈します。
見出しレベルはアウトライン毎に独立している為、アウトラインが異なるなら、文書内にh1要素が複数存在しても問題ありません。
MDN(日本語)では、スクリーンリーダーが (1) に該当する為、h1要素を複数使用すべきではない、と説明しているのでしょう。
MDN(英語)では、MDN(日本語)の説明も加味すると、下記のように読めます。
- User-Agentがアウトラインアルゴリズムの概念を持つ前提でHTMLをマークアップするのはベストプラクティスではない
- アウトラインアルゴリズムが存在しない古いバージョンのHTML仕様を意識してマークアップすべきである
つまり、問題の根幹はh1要素ではなく、アウトラインアルゴリズムに依存してマークアップすべきではないになると思います。
2018/03/27時点でもh1要素が複数存在できるHTML5規定があった事を踏まえると、スクリーンリーダがアウトラインを解釈できるようになる時はかなり先になりそうです。
A document can contain multiple top-level headings:
昔はIE6がWeb制作で新しい技術を使えない要因でしたが、現在ではスクリーンリーダが足枷になっているようですね…。
投稿2022/10/27 10:23
編集2022/10/28 03:04総合スコア18194
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

2
これについて何かご存知でしたら教えて頂けると幸いです。
HTML LSに明記されています。
If a document has one or more headings, at least a single heading within the outline should have a heading level of 1.
投稿2022/10/27 07:34
総合スコア146493
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/27 07:59
2022/10/27 10:30

0
初期のHTML5には
「article
やsection
要素で区切り、その配下はまたh1
から使うようにすれば良いんじゃね?」という
「セクショニングコンテンツ」という考え方がありました。
しかし、その思想は人類には早すぎたようです。
記事全体としての表題がどのh1から取り出せるのか、
Webサイト開設者のマークアップのスキルに依存することになりました。
スキルの低い人が作ったHTMLの多重・並列のsectionの入れ子から、記事全体を要約する唯一のh1タグを取り出すことは不可能です。
こっからは予想ですが、検索エンジンのアルゴリズム作るのに難儀する等の話で、
議論の末セクショニングコンテンツごと闇に葬られてしまったんじゃないかと思います。
だから現状推奨されているマークアップとして、
「HTMLファイル1個につき、h1要素は1個」というのが推奨されているわけですね。
この辺の流れが下記の記事から読み取れました。
私の回答は又聞き程度の信憑性のものなので、
興味があるなら参照元から追いかけてみてはいかがでしょう?
投稿2022/11/01 01:50
総合スコア21362
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。