3 ポイント 投稿者 GN⁺ 2025-04-11 | 1件のコメント | WhatsAppで共有
  • 主要ブラウザーが <h1> タグのデフォルトスタイル(UAスタイル)を変更するアップデートを進めています
  • 特に、ネストされた sectionarticlenavaside などの内部で使われた <h1> に影響します
  • 開発者はこの変更により、サイトで予期しないスタイル変化や Lighthouse の警告が発生する可能性があるため注意が必要です

何が変わるのか

  • HTML 仕様にはかつて「アウトラインアルゴリズム」という規則があり、ネストされた sectioning 要素の数に応じて <h1> が視覚的に <h2><h3> のように見えるよう処理されていました
  • たとえば section > h1<h2> のように、section > section > h1<h3> のようにレンダリングされていました
  • これは実際のアクセシビリティツリーには反映されず、ツールごとに異なる解釈がされて混乱を招いていました
  • 最終的にこのアルゴリズムは 2022 年に HTML 仕様から削除され、現在はブラウザー側でもそれに基づく UA スタイルを削除しています

以前のブラウザー UA スタイルの例

  • x h1 { font-size: 1.50em }
  • x x h1 { font-size: 1.17em }
  • x x x h1 { font-size: 1.00em }
  • x x x x h1 { font-size: 0.83em }
  • x x x x x h1 { font-size: 0.67em }

HTML 構造の例

<body>  
  <h1>Level 1</h1>  
  <section>  
    <h1>Level 2</h1>  
    <section>  
      <h1>Level 3</h1>  
      <section>  
        <h1>Level 4</h1>  
      </section>  
    </section>  
  </section>  
</body>  

予想される変化と時期

  • <h1> は、ネストされた section 要素の中にあるという理由だけで自動的にスタイルが変更されることはなくなります
  • UA スタイルはすべての <h1> に対して同じスタイルを適用します
  • Lighthouse では <h1>font-size が定義されていないと警告が表示されます
  • 表示される警告: H1UserAgentFontSizeInSection

Firefox

  • 2025 年 3 月 31 日から Firefox Beta 138 でデスクトップユーザーの 50% にスタイル変更の配信を開始
  • Firefox Stable 138 では 5% に配信し、その後 140 バージョンまでに全面展開の予定
  • Firefox 136 以降では font-size や margin が定義されていない場合、コンソール警告が表示されます
  • 設定変更方法: about:configlayout.css.h1-in-section-ua-styles.enabledfalse に設定

Chrome

  • Chrome 136 から <h1> がデフォルトの小さくなるスタイルを使っている場合に警告が発生します
  • これは Lighthouse の「Best Practices」スコアに影響する可能性があります

Safari

  • まだ具体的なアップデートやバグトラッキングはありませんが、WebKit でも同様のアップデートが予想されます

Lighthouse 警告の修正方法

  • Lighthouse は Chromium DevTools の警告に基づき、<h1>font-size がない場合に警告を表示します
  • これを避けるには、明示的に <h1> にスタイルを指定する必要があります

スタイル例

h1 {  
  margin-block: 0.67em;  
  font-size: 2em;  
}  
  • specificity(優先度)を避けるには :where() を使用
:where(h1) {  
  margin-block: 0.67em;  
  font-size: 2em;  
}  

要約チェックリスト

  • ブラウザーのデフォルトスタイルに依存しないこと
  • <h2><h3> などを適切に使い、階層構造を明示的に表現すること
  • すべての <h1>font-sizemargin を明示すること
  • CSS reset を更新してこの変更を反映すること
  • Lighthouse と DevTools で警告を確認すること
  • MDN の関連ドキュメントを参照して最新内容を反映すること

関連資料

1件のコメント

 
GN⁺ 2025-04-11
Hacker Newsの意見
  • Firefox 138の安定版で5%のユーザーに展開し、50%まで拡大する計画とのこと

    • Web開発者はユーザーと異なるブラウザーの挙動を持つ可能性があり、テストが難しくなるという意見がある
    • Facebookの展開方式を参考にしたようだが、Firefoxはサーバーサイドのソフトウェアではないため、この方式が適切ではないという意見がある
  • W3Cが採用したアウトラインアルゴリズムの歴史的背景が興味深い

    • ブラウザーとスクリーンリーダーは、既存のWebコンテンツとのあいまいさや保守性の問題から採用を拒否した
    • 8年後、WHATWGが最終的にこれを断念した
  • H1の挙動がいつから仕様に含まれていたのか気になるという意見がある

    • 1995年からHTMLを書いてきたが聞いたことがないという意見がある
    • 混乱を招くため、削除したほうがよいという意見がある
  • セクション要素(<section>, <aside>, <nav>, <article>)と<h1>タグの挙動について深く考えたことはなかったという意見がある

  • アウトラインアルゴリズムが成功しなかったのは残念だという意見がある

    • さまざまな出所のコンテンツを任意に構成できるべきだという意見がある
    • <h1>断片を書き、それに文書全体のコンテキストではなく「自分のコンテキストにおける最上位の見出し」として意味を持たせられるべきだという意見がある
  • <h1>タグは位置に関係なく<h1>であるべきだという意見がある

    • デフォルトで変更されるべきではなく、スクリーンリーダーのアクセシビリティ問題も解決できる
  • このような複雑さのため、多くのデザイナーがあらゆるものに<div>を使っているという意見がある

    • role属性を使えばアクセシビリティも確保できる
  • HTMLのヘッダーはやや愚かだと思うという意見がある

    • 本のセクションを<section>タグで区切るほうがよりよい表現だという意見がある
    • h1とh2がHTMLの他の形式とは異なる明示的なタグと階層構造を作っているという意見がある
    • 過去に戻ってTim Berners-Leeにこの問題を解決させたいという冗談がある