最終更新:
Tailwind CSS v4とCSS Modulesの違いは?書き方・制約・選び方
どちらもCSSを書く仕組みなの?
そうだけれど、解決する問題が違うよ。Tailwindは小さなユーティリティクラスを組み合わせる設計。CSS Modulesは、クラス名やアニメーション名を既定でローカルな範囲にする仕組みだね。見た目のルールは自分で書くんだ。
Tailwindだとどう書くの?
CSS Modulesのクラス名はどうなる?
ビルド環境がローカル名を別の名前へ変換し、JavaScriptから参照する対応表を返すよ。よく.module.cssというファイルを使う。ただし命名形式や読み込み方法はツール次第。Reactそのものの機能ではなく、フレームワークやビルド環境の対応を確認するんだ。
ローカルならほかのCSSの影響は受けない?
クラス名の衝突は避けやすいけれど、Shadow DOMのようにすべて隔離するものではないよ。継承、要素セレクタ、グローバルなスタイル、カスケードは関係する。名前の衝突がないことと、見た目への影響がないことは別だね。
v4では設定が不要なの?
動的にクラス名を組み立てても動く?
どちらが高速で軽い?
両方使うのはあり?
併用はできるけれど、Tailwind公式は避けられるなら併用しないことを勧めている。既存CSS Modulesへ段階導入するなど、理由を決めよう。@applyなどでテーマを参照するなら@referenceやビルドの扱いも確認してね。
どちらを選ぶかの比較表
| 確認点 | Tailwind CSS v4 | CSS Modules |
|---|---|---|
| 主に書く場所 | テンプレートのクラス+テーマCSS | CSSファイル+クラスの参照 |
| 得意な管理 | 色・余白などの共通ルールをクラスで再利用 | コンポーネントごとの名前と独自スタイル |
| 必要な確認 | 対応ブラウザ・ソース検出・ビルド連携 | ビルドツール対応・グローバルCSSとの関係 |
| 性能の評価 | 実際の生成CSSと配信量で比較 | 同じ画面・条件で比較 |
Tailwind v4.0の公式基準はSafari 16.4以降、Chrome 111以降、Firefox 128以降です。古いブラウザの対応が必要なら、この基準と採用バージョンの説明を確認します。
「開発中は見えたのに本番でスタイルが消える」とき
Tailwindでは、必要なクラスが完全な文字列でソースに存在するか、対象ファイルが検出範囲に入るかを確認します。CSS Modulesでは、対応表を介してクラスを指定しているか、CSSを正しく読み込んでいるかを確認します。両方で、最後はブラウザの適用済みスタイルとカスケードを調べてください。
Sassとの比較はこちらのコラムで、プリプロセッサとユーティリティ設計の違いから説明しています。
参考資料
確認日:2026年9月27日。製品の仕様・料金・対応環境は導入時にも確認してください。
- Tailwind: Upgrade guide:v4の設定移行・ブラウザ条件。
- Tailwind: Detecting classes:完全なクラス文字列の検出。
- CSS Modules: README:クラス・アニメーション名のローカル化と対応表。
- Tailwind: Compatibility:CSS Modulesとの併用、@reference、Sassとの違い。