Astroコンポーネントのstyleはどこに書くべきか

Astroコンポーネントのstyleは、.astroか.cssのどちらに書くべきか?

投稿日: 2025-03-30

更新日: 2025-03-30

方法

  • .astro ファイルの中に <style> タグで書く
  • 外部 .css ファイルを使う

結論

個人的に .astro ファイル内にスタイルを書くのが良さそう

.astro ファイルの中に <style> タグで書く

メリット

  • スコープ付き(scoped styles):他のコンポーネントに影響しない
  • コンポーネントとスタイルが同じ場所で完結 → 保守しやすい
  • 小〜中規模プロジェクトに最適

外部 .css ファイルを使う

メリット

  • 再利用性が高い(複数のコンポーネントで同じ CSS を使いたいとき)
  • 大規模なスタイル整理に向いてる

デメリット

  • スコープされないので、グローバルに影響が出やすい
  • コンポーネントとスタイルが分離して、可読性がやや下がる

補足

Scoped Style の仕組み

Astro の.astro ファイル内で <style> を書くと、自動的にスコープされる。 つまりクラス名の後ろにランダムなハッシュが付与されて、他とバッティングしないようになってる。

<!-- 出力イメージ -->
<button class="btn astro-ABC123">Click</button>