Prose の非先頭 h1 の上マージン除去
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 + h1 と h1.title の margin-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.md の Unreleased セクションに、今回の削除内容が追記されました。
@@ -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 からも不要なコードを除去しました。余白管理を前方要素に委譲する設計が明確化され、コードベースの保守性が向上します。