Tailwind CSSでデフォルトのテーマを無効にして完全に上書きする方法

こんにちは。エキサイトでデザイナーをしている齋藤です。

今回は、Tailwind CSSでデフォルトのテーマを無効にして完全に上書きする方法をご紹介します。

なお、本稿の内容は v4.1.13(2025年9月24日時点の最新版)のTailwind CSSに準じています。

実現したいこと

冒頭、実現したいことを整理します。

Tailwind CSSでは @import "tailwindcss"; を宣言した設定用CSSファイルの @theme{}にてテーマがカスタマイズできます。

例えば、デフォルトのカラーパレットのうち、red-500が持つカラーコードを変更したい場合は以下のように記述します。

@import "tailwindcss";

@theme {
  /* デフォルトを上書く */
  --color-red-500: #ef4444;
}

これにより、プロダクト固有のスタイルガイドを有する場合に、Tailwind CSSのテーマに反映できます。

しかし、このカスタマイズ方法はあくまで上書きですので、変更していないものは呼び出せてしまいます。

@import "tailwindcss";

@theme {
  /* 自分で定義したカラー */
  --color-white: #ffffff;
  --color-black: #000000;
  --color-red: #ef4444;
}
<!-- 自分で定義したカラー以外も呼び出せてしまう -->
<p class="text-pink-500">テキスト</p>

この状態ですと、プロダクトのスタイルガイドで定義されたルールを逸脱したスタイリングも可能となってしまいます。

一方で今回実現したいのは、Tailwind CSSが用意したカラーテーマを無効にして、@theme {}内に自分で定義したカラーのみが呼び出せるようにすることです。

テーマのネームスペースに対してinitialを宣言すると無効にできる

Tailwind CSSでデフォルトのテーマを無効にしたい場合は、テーマのカテゴリごとのネームスペースに対して initial を宣言すると無効にできます。

例えば、デフォルトのカラー(ネームスペースは--color-*)をすべて無効にする場合は次のようにします。

@import "tailwindcss";

@theme {
  /* デフォルトのカラーを無効化 */
  --color-*: initial;

  /* プロダクト定義のカラー */
  --color-white: #ffffff;
  --color-black: #000000;
  --color-red: #ef4444;
}
<!-- 定義済みのカラーは呼び出せる -->
<p class="text-red">テキスト</p>

<!-- 未定義のカラーは呼び出せない -->
<p class="text-pink-500">テキスト</p>

カラーの系統単位での無効化も可能です。

@import "tailwindcss";

@theme {
  /* blueシリーズは無効化 */
  --color-blue-*: initial;
}
<!-- 呼び出せる -->
<p class="text-red-500">テキスト</p>

<!-- 呼び出せない -->
<p class="text-blue-500">テキスト</p>

まとめ

今回は、Tailwind CSSでデフォルトのテーマを無効にして完全に上書きする方法をご紹介しました。

この手法により、プロダクト固有のスタイルガイドが存在し、それを厳格に運用したい場合に、口伝ではなく仕組みで制約を設けられます。

一方でカラーパレットが不十分な場合にこの手法を用いてしまうと、text-[#931938]のような絶対値での指定が増えてしまいUIの一貫性が保てなくなってしまう可能性があるため、チーム内での議論と認識合わせをした上での導入が必要と考えます。

Tailwind CSSを使用する方の一助となれば幸いです。ご精読ありがとうございました。

参考文献