Bootstrap IconsのSVG width属性による表示サイズ固定を解消

shoelace-style/webawesome

WebAwesomeの<wa-icon>コンポーネントで、Bootstrap Iconsライブラリのアイコンがfont-sizeによるサイズ変更に応じなかった問題が解決されました。SVGのwidth属性がCSS指定を上書きしていたため、明示的にwidth: autoを指定する変更が加えられています。

背景

Bootstrap Iconsライブラリは、SVG要素にwidth属性を含めて返します。この属性値がCSSのfont-size指定よりも優先されるため、<wa-icon>のサイズ変更が効かない問題が#1818で報告されました。

他のアイコンライブラリ(Font Awesomeなど)ではこの問題は発生しておらず、Bootstrap Icons特有の動作です。SVG要素に属性としてwidthheightが指定されている場合、CSS側で明示的に上書きしない限り、属性値が優先される仕様によるものです。

ユーザーはfont-sizeプロパティでアイコンサイズを制御することを期待しているため、この動作は直感に反します。

技術的な変更

packages/webawesome/src/components/icon/icon.styles.tsのスタイル定義にwidth: autoが追加されました。

svg {
  height: 1em;
  overflow: visible;
  width: auto;

  /* Duotone colors with path-specific opacity fallback */
  path[data-duotone-primary] {

既存のheight: 1em指定により、高さはfont-sizeに応じて変化します。width: autoを追加することで、SVGのwidth属性が存在する場合でもCSS側の指定が優先され、アスペクト比を保ちながら幅も自動調整されるようになります。

この変更により、Bootstrap Iconsを含むすべてのアイコンライブラリで、font-sizeによる一貫したサイズ制御が可能になりました。width属性を持たないアイコンライブラリへの影響はなく、autoはデフォルトの動作を明示しているに過ぎません。

設計判断

CSSのスタイル定義への1行追加という、シンプルで影響範囲の少ない修正方針が採用されました。

#1818では「width: autoを追加することで修正可能」と提案されており、その提案どおりの実装が行われています。既存のheight: 1em指定と対になる形でwidth: autoを配置することで、SVGのアスペクト比保持という標準的な動作を活用した設計です。

まとめ

本PRは、Bootstrap IconsのSVG属性がCSSを上書きしていた問題を、width: autoの1行追加で解決した変更です。アイコンライブラリごとの実装の違いを意識させず、font-sizeによる統一的なサイズ制御を実現しています。

記事メタデータ

Generated by:
Claude Sonnet 4.5 for DiffDaily

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

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
2回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

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

リード文(総論)→各論(背景、技術的な変更、設計判断)→まとめ(結論)の3部構成が明確に守られており、非常に分かりやすい構成です。

カスタムMarkdown構文 ✓ PASS

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

ファイル名付きシンタックスハイライト(```typescript:path/to/file```)およびGitHubのIssue/PRへのリンク記法([#1818](URL))が正しく使用されています。

対象読者への適合性 ✓ PASS

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

SVG属性とCSSの優先順位に関する解説など、専門知識を持つエンジニアを対象とした適切な技術レベルで記述されています。

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

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

各セクションが総論→各論の構成になっており、各段落がトピックセンテンスで始まるなど、パラグラフ・ライティングの原則が徹底されています。可読性が非常に高いです。

Diff内容との照合 ✓ PASS

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

記事内のコードブロックは、提供されたDiff情報と完全に一致しており、変更点(`width: auto;`の追加)を正確に反映しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「width属性」「font-size」「アスペクト比」など、関連する技術用語が文脈に沿って正確に使用されています。

説明の技術的正確性 ✓ PASS

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

SVGのwidth属性がCSS指定より優先される問題点や、`width: auto`がアスペクト比を維持しつつサイズ調整を可能にする仕組みなど、技術的な説明が正確かつ論理的です。

事実の突合 ✓ PASS

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

記事内のすべての主張(問題がBootstrap Icons特有であること、Issue #1818で報告されたことなど)は、PRのDescriptionやDiffから裏付けられており、ハルシネーションは検出されませんでした。

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

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

PR番号(#1968)およびIssue番号(#1818)が正確に記載されています。

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

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

PRの主題である「Bootstrap Iconsの表示サイズ問題の修正」を、記事タイトルが的確に要約しています。

外部知識の正確性 ✓ PASS

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

記事に含まれる情報はすべてPR情報または一般的な技術知識に基づいており、バージョンサポート状況やリリース日程といった、PRに記載のない外部知識の捏造はありません。

時間表現の正確性 ✓ PASS

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

完了した変更を過去形(「解決されました」など)で表現しており、時間表現に歪曲はありません。