`wa-radio-group` のラベル縦位置ズレを CSS 1 行削除で修正

shoelace-style/webawesome

wa-radio-group コンポーネントのラベルが他のフォームコントロールと比べて約 3px 上にずれる問題を、スタイル定義の 4 行削除のみで解消しました。

背景

wa-radio-group のラベルが、wa-input などの他フォームコントロールのラベルと縦方向に揃わないバグが報告されていました。Issue #2334 によると、Chrome・Firefox の両ブラウザで約 3px の上方向へのズレが確認されており、OS を問わず再現する問題でした。

視覚的なグリッド整合性はフォーム UI の品質に直結するため、わずかなズレでも複数コントロールを並べたレイアウトでは目立ちます。

技術的な変更

原因は radio-group.styles.ts:host セレクタに記述された display: block の上書きでした。

変更前:

import { css } from 'lit';

export default css`
  :host {
    display: block;
  }

  .form-control {
    position: relative;
    border: none;

変更後:

import { css } from 'lit';

export default css`
  .form-control {
    position: relative;
    border: none;

Web Components では :host のデフォルト表示が inline であるため、display: block を明示することは一般的な慣例です。しかし wa-radio-group の場合、この上書きがフォームコントロール共通スタイルの display デフォルト値を意図せず変更し、ラベルの縦方向の基準位置をずらす副作用を生じさせていました。共通スタイルに任せることで、他コントロールと同一の表示コンテキストが確保されます。

設計判断

コンポーネント固有スタイルの最小化 という判断が読み取れます。

修正は追加ではなく削除です。:host { display: block; } を除去することで、フォームコントロール共通のスタイル基盤に処理を委ねる方針が選択されています。コンポーネント固有のスタイルが共通基盤の挙動を上書きしてしまうと、こうしたズレが生じやすくなります。個別コンポーネントのスタイルは共通基盤の動作に干渉する最小限に留めるという設計原則の実践といえます。

まとめ

4 行のスタイル削除という最小限の変更で、フォーム UI のラベル整合性が回復されました。「コンポーネント固有の上書きが共通基盤の動作を壊す」という Web Components スタイリングの典型的な落とし穴であり、同様のパターンが他コンポーネントに潜んでいないか確認する価値があります。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
9c9c74e4

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

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

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

リード文(総論)→背景・技術詳細(各論)→まとめ(結論)という構成が明確で、理想的な構造です。設計判断セクションも含まれており、変更の意図を深く理解できます。

カスタムMarkdown構文 ✓ PASS

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

ファイル名付きシンタックスハイライト(`typescript:path/to/file`)と、Issue番号のリンク記法(`[#2334](URL)`)が正しく使用されています。

対象読者への適合性 ✓ PASS

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

Web Componentsの`:host`や`display`プロパティなど、専門知識を持つエンジニアを対象とした適切な語彙と情報量で書かれています。

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

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

各セクション、各パラグラフが「総論→各論」の構造で書かれており、トピックセンテンスが明確です。1段落1トピックの原則も守られており、非常に読みやすいです。

Diff内容との照合 ✓ PASS

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

記事内のコードブロックは、提供されたDiff情報と完全に一致しています。削除された`:`host`セレクタのブロックが正確に示されています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

`:host`、`display: block`、`Web Components`、フォームコントロール共通スタイルなど、技術用語が正確かつ適切な文脈で使用されています。

説明の技術的正確性 ✓ PASS

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

「`:host`の`display: block`上書きが、共通スタイルと競合してズレを生じさせていた」という原因の説明は、PRのDescriptionとDiffの内容から導かれる論理的かつ正確なものです。

事実の突合 ✓ PASS

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

記事内の主張(約3pxのズレ、ブラウザ・OS非依存)は、PRが参照するIssue #2334の内容に基づいており、正確です。設計判断は推論ですが、「…という判断が読み取れます」と断定を避けており、妥当な洞察です。

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

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

PR番号(#2374)、Issue番号(#2334)、削除行数(4行)など、記事に含まれる数値や固有名詞はすべて正確です。

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

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

記事のタイトルは、PRの主題である「ラジオグループのラベル位置ズレの修正」を的確に要約しており、内容と完全に一致しています。

外部知識の正確性 ✓ PASS

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

「Web Components では :host のデフォルト表示が inline である」という外部知識は、技術的背景を説明するための妥当な補足であり、PRの文脈を損なうものではありません。

時間表現の正確性 ✓ PASS

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

「報告されていました」「解消しました」といった過去形の表現が適切に使われており、時間的な歪曲はありません。