CSS変数によるマルチブランドテーマの実装
CSSカスタムプロパティの値を切り替え、実行時に複数のブランドテーマを切り替えます。
「CSS変数によるマルチブランドテーマの実装」はCoddyKit上の無料CSS Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CSS Academyコースには全4レッスンが含まれています。
テーマアーキテクチャの概要
マルチブランドのテーマ設定では、1組のコンポーネントエイリアストークンを、ブランドごとに異なるグローバルトークン値へマッピングします。コンポーネントはエイリアストークンを参照し、ブランドテーマファイルがエイリアスをブランド固有のグローバル値に再マッピングします。
ベーストークン層
:rootでグローバルトークンを定義します。すべての生のカラー値、スペーシング値、タイポグラフィ値をここに定義します。これがデフォルトブランドです。コンポーネントからグローバルを直接参照することはありません。必ずエイリアス経由で参照します。
<span class="swatch swatch-primary"></span>
<span class="swatch swatch-secondary"></span>エイリアストークン層
エイリアストークンはvar()を使ってグローバルを参照します:--color-action: var(--color-brand-primary)。コンポーネントでは--color-actionを使います。--color-brand-primaryの意味を切り替えるだけで、システム全体が変わります。
ブランドテーマクラス
htmlまたはコンテナ要素にクラスを付けてブランドテーマを適用します。各テーマクラスは、そのブランドのスコープにおけるグローバルトークンを上書きします。コンテナ内のコンポーネントは、ブランドの値を自動的に継承します。
<span class="swatch"></span>
<span class="theme-brand-a swatch"></span>
<span class="theme-brand-b swatch"></span>テーマとしてのダークモード
ダークモードはテーマのバリアントです。カラー トークンを上書きするクラスまたはメディアクエリとして実装します。OSのデフォルトにはprefers-color-schemeを、ユーザーによる上書きには.darkクラスを使います。どちらも同じエイリアストークンを変更します。
<div class="surface">Themed surface</div>トークンの継承
CSSカスタムプロパティはカスケードし、継承されます。コンテナ要素に適用したテーマは、すべての子孫要素に影響します。ネストしたテーマはコンテナレベルで外側のテーマを上書きするため、ページ内にウィジェットを配置するテーマ設定などに便利です。
トークンの漏洩を防ぐ
エイリアストークンが常に定義されるようにします。テーマクラスがない場合、エイリアスはデフォルトに適切にフォールバックする必要があります。CSSのvar()フォールバック構文であるvar(--color-action, #3b82f6)を使い、見えないテキストや背景の欠落を防ぎます。
テーマファイルの生成
Style Dictionaryでは、1つのトークンJSONからテーマごとに別のCSSファイルを出力できます。ビルドステップでtheme-brand-a.cssとtheme-brand-b.cssを生成します。実行時に適切なファイルを読み込むか、ブランドごとに別のバンドルへコンパイルします。
テーマのテスト
各テーマで各コンポーネントを描画するビジュアルリグレッションテストを作成します。PercyとChromaticでは、テーマのバリアントごとにスクリーンショットを取得できます。自動ビジュアルテストにより、グローバルトークンの値が予期せず変わったときのリグレッションを検出できます。
実行時のテーマ切り替え
JavaScriptでテーマクラスを切り替えます:document.documentElement.classList.replace("theme-a", "theme-b")。CSS変数はコンポーネントを再描画せずに即座に更新されます。Reactの再レンダリングや、静的な値のスタイル再計算は必要ありません。
パフォーマンス上の考慮事項
CSS変数はペイント時に解決されるため、ルート変数を変更すると、それを使うすべての要素で再ペイントが発生します。グローバル変数の変更はアニメーションループではなく、テーマの切り替えなどのユーザー操作に限定します。アニメーションによるテーマ効果には、個別のプロパティトランジションを使います。
知識チェック
CSSカスタムプロパティのテーマを使うと、コンポーネントのCSSを変更せずにブランドを切り替えられるのはなぜですか?
概要
マルチブランドのテーマ設定では、グローバルな生のトークン値と、セマンティックなエイリアストークンを分離します。テーマクラスはコンテナのスコープでグローバルを上書きします。エイリアスを参照するコンポーネントは、現在有効なブランドテーマを自動的に反映するため、コンポーネントコードを変更せずに実行時の切り替えが可能です。
よくある質問
「CSS変数によるマルチブランドテーマの実装」レッスンは無料ですか?
はい。「CSS変数によるマルチブランドテーマの実装」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CSS Academyコースには全4レッスンが含まれています。
「CSS変数によるマルチブランドテーマの実装」で何を学びますか?
CSSカスタムプロパティの値を切り替え、実行時に複数のブランドテーマを切り替えます。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CSS Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「CSS変数によるマルチブランドテーマの実装」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCSS Academyレッスンでコードを書いて実行できますか?
はい。すべてのCSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- デザイントークンとは
- トークンの命名規則
- CSS変数によるマルチブランドテーマの実装
- トークンツール: Style Dictionary