CSS変数によるマルチテーマブランディングシステム
CSSカスタムプロパティとdata属性を使用して、完全に異なるカラースキームを切り替えるマルチテーマブランディングシステムを作成します。
Theme Systems
詳細な説明
複数ブランドテーマのサポート
一部のアプリケーションではライトとダーク以上のものが必要です。SaaSプラットフォームでは各顧客が独自のブランドカラーを適用でき、マーケティングサイトではキャンペーンごとにテーマを切り替えることがあります。CSSカスタムプロパティでこれを管理できます。
アーキテクチャ
:rootでニュートラルなベーステーマを定義し、data属性でオーバーライドします:
:root {
--primary: #3b82f6;
--primary-hover: #2563eb;
--accent: #8b5cf6;
--bg: #0a0a0b;
--surface: #141415;
}
[data-theme="sunset"] {
--primary: #f97316;
--primary-hover: #ea580c;
--accent: #ef4444;
--bg: #1c1917;
--surface: #292524;
}
[data-theme="ocean"] {
--primary: #06b6d4;
--primary-hover: #0891b2;
--accent: #14b8a6;
--bg: #0c1222;
--surface: #172135;
}
JavaScriptでのテーマ切り替え
document.documentElement.setAttribute('data-theme', 'sunset');
スコープ付きテーマ
data属性は任意のDOMレベルに適用でき、単一ページ内でローカライズされたテーマセクションを実現します。製品カードにdata-theme="ocean"を持たせ、ページの残りはデフォルトを使用できます。
トークン構造
セマンティックトークン(--primary、--bg、--text)をトップレベルに保ち、コンポーネントから参照します。各テーマはセマンティックトークンのみをオーバーライドし、すべてのコンポーネント変数ではありません。これにより、数十のコンポーネントがあってもオーバーライドのサーフェスが小さく保たれます。
テーマの動的生成
CSS変数ジェネレーターは複数のテーマブロックを生成できます。各ブランドのパレットを生成し、変数ブロックをエクスポートして、適切な属性セレクタと共にCSSバンドルに含めます。
ユースケース
ホワイトラベルブランディングを提供するSaaS製品、キャンペーン固有のテーマを持つマーケティングサイト、または単純なライト/ダーク以上の実行時切り替え可能なカラースキームが必要なアプリケーション。