Prose の非先頭 h1 の上マージン除去

shoelace-style/webawesome

wa‑prose が隣接要素の直後に続く h1 に付与していた上マージンを削除し、スタイル定義を簡素化します。

背景

wa-prose は要素間の余白を統一的に管理するユーティリティ ですが、従来は * + h1 パターンにも同様の上マージンを適用していました。実際のページ構成では h1 が唯一のトップレベル見出しであり、前に配置されるパンくずリストやヒーローセクション、バッジバーなどが余白を所有すべきケースが多く、余計な上マージンが残っていました。このため、余分な上書きや調整が必要になることがありました。

技術的な変更

CSS ユーティリティの削除

src/styles/utilities/prose.css から & * + :where(h1) セレクタが削除 されました。削除前は以下のように margin-block-start が設定されていました。

@@ -62,9 +62,6 @@
-    & * + :where(h1) {
-      margin-block-start: var(--wa-prose-rhythm-3xl);
-    }

削除後も & :where(h1):has(+ *) の下側マージンは残ります。

& :where(h1):has(+ *) {
  margin-block-end: var(--wa-prose-rhythm-s);
}

ドキュメント用スタイルシートの整理

docs/assets/styles/docs.css に記述されていた .page-breadcrumbs + h1h1.titlemargin-block-start: 0 が削除され、コメント行も除去されました。

@@ -180,12 +180,6 @@
-  /* The breadcrumb is navigation, not prose flow — drop wa-prose's
-     previous-sibling top margin on the page title that follows it. */
-  .page-breadcrumbs + h1 {
-    margin-block-start: 0;
-  }
-}
@@ -257,14 +251,9 @@
- h1.title {
-  /* Siblings above own their block-end spacing — skip wa-prose's `* + h1` top margin. */
-  margin-block-start: 0;
-
-  wa-badge {
-    vertical-align: middle;
-    font-size: 1.5rem;
-  }
- }
+ h1.title wa-badge {
+  vertical-align: middle;
+  font-size: 1.5rem;
+ }

変更履歴への追記

docs/resources/changelog.mdUnreleased セクションに、今回の削除内容が追記されました。

@@ -57,6 +57,7 @@
 - Updated Native Styles so that `<th>` borders only apply to column headers [pr:2492]
+- Removed `wa-prose`'s top margin on `h1` elements that follow a sibling

設計判断

余白の所有者は直前の要素であるべき という方針に沿い、h1 に対する例外的上マージンを削除しました。PR の議論では新しい設定キーの導入や条件分岐の追加も検討されたようですが、既存の wa-prose 設定を変更せずに削除だけで実装する方針が採用されました。これにより、後方互換性を保持しつつスタイル定義がシンプル になっています。

まとめ

wa-prose の非先頭 h1 に付与されていた上マージンを削除し、関連するドキュメント用 CSS からも不要なコードを除去しました。余白管理を前方要素に委譲する設計が明確化され、コードベースの保守性が向上します。

記事メタデータ

Generated by:
gpt-oss-120b for DiffDaily
LLM Trace:
09c92e52

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
3回 (改善を経て承認)
Reviewed by:
gpt-oss-120b for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文・背景・技術的変更・設計判断・まとめの5要素が揃い、総論→各論→結論の流れが明確です。まとめはリード文の繰り返しではなく、変更の意義を別角度から述べています。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

コードブロックは ```:diff:filepath``` や ```:css:filepath``` の形式で正しく記述され、PRリンクは[#2519](URL) の形でリンク化されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

CSS セレクタやプロジェクト固有のユーティリティ名など、エンジニア向けの専門的内容で構成されており、初心者向けの過度な説明はありません。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクションは総論・各論・結論の段落構成になり、段落はトピックセンテンスで始まり1段落1トピック、文数も6文未満で適切に区切られています。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事中のコードブロックは提供されたDiffと完全に一致しており、削除・追加箇所・ファイルパスすべてが正確に反映されています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

使用されている技術用語(margin-block-start、:where(h1)、:has(+ *) など)はPRで使用されている表現と合致し、誤用は見られません。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

変更理由や影響についての説明はPRの記述と一致しており、因果関係も論理的です。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事の全ての主張はPRタイトル・Description・Diffで裏付けられており、推測や捏造はありません。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号 #2519、ファイルパス、削除行数など数値情報は正確です。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事タイトルはPRタイトルの意味を日本語で適切に置き換えており、内容の一致度は高いです。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

バージョンサポートやリリース日程など、PRに記載されていない外部情報は一切含まれていません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

時間表現の記述はなく、PRの記載と食い違う表現もありません。