カスタムプロパティで動的デザイン!変数を使った保守性の高いCSS設計|現場で使える実践テクニック

C
クリオ
Web制作ディレクター / フロントエンジニア

こんにちは!

今日は「カスタムプロパティで動的デザイン!変数を使った保守性の高いCSS設計」について解説します。

僕が感じた「色の統一管理」の大変さ

Web制作会社に入りたての頃、僕はめっちゃ単純な失敗をしていました。
クライアントから「ブランドカラーの青を全体で使ってほしい」と言われて、CSSに#3b79b7という色コードを何十箇所に書き込んだんです。
その後、「あ、ちょっと色を濃くしてもらえませんか?」という修正依頼が来たとき…。

もうお分かりですよね。
全部手で修正する羽目になりました。
ほんま、あの時は焦りました。
一つ一つ検索して置換して…それでも修正漏れがあったり。

その時に先輩から教えてもらったのが「カスタムプロパティ」でした。
正直、最初は「こんなん何に使うの?」と思ってたんですが、使ってみたら人生が変わりました。
いやほんま。

カスタムプロパティの基本と実践的な活用法

カスタムプロパティ(CSS変数)は、--で始まるプロパティ名で値を定義して、後からvar()で呼び出すというシンプルな仕組みです。
まずは基本から説明しますね。

こんな感じで、ルート要素に色を定義します:

:root {
  --color-primary: #3b79b7;
  --color-secondary: #5a9fd4;
  --color-text: #333333;
  --spacing-unit: 8px;
  --border-radius: 8px;
}

そして使う時はこう:

.button {
  background-color: var(--color-primary);
  color: white;
  padding: var(--spacing-unit) calc(var(--spacing-unit) * 2);
  border-radius: var(--border-radius);
}

これで何が変わるかというと、色を変更する時は:root内の値を一つ変更するだけで、全体が統一されるんです。
先ほどの失敗が二度と起きません。

現場でよく見るのは、色だけじゃなくて「余白」「フォントサイズ」「アニメーション時間」なんかも変数化してる例です。
これらを統一管理することで、デザインの一貫性が自動的に保たれるんですよ。

特に便利なのが「計算」です。
上の例でcalc(var(--spacing-unit) * 2)と書いてますが、このように変数を組み合わせることで、柔軟なスケーリングが実現できます。

スコープを活用した柔軟なテーマ切り替え

カスタムプロパティの本当に強いところは「スコープが使える」ということです。
同じプロパティ名でも、要素ごとに異なる値を持たせることができるんです。

例えば、ダークモードとライトモードを切り替える場合を考えてみてください:

/* ライトモード(デフォルト) */
:root {
  --bg-primary: #ffffff;
  --text-primary: #333333;
  --border-color: #e0e0e0;
}

/* ダークモード */
body.dark-mode {
  --bg-primary: #1a1a1a;
  --text-primary: #ffffff;
  --border-color: #444444;
}

後は同じCSSで両方のモードに対応できます:

.card {
  background-color: var(--bg-primary);
  color: var(--text-primary);
  border: 1px solid var(--border-color);
}

JavaScriptでbodydark-modeクラスを追加・削除するだけで、テーマが切り替わります。
ほんまに便利やん。

さらに応用として、特定のコンポーネントだけ色を変えたい場合も簡単です:

.card.featured {
  --bg-primary: #f0f8ff;
  --text-primary: #003366;
}

このように、親要素でカスタムプロパティを上書きすると、その要素以下の子要素で新しい値が使われます。
複雑なCSSをいっぱい書かなくても、シンプルに実現できるんです。

現場でよく見る活用例としては、複数クライアントの案件を同じベースコードで運用する場合です。
クライアントごとに色やフォント、余白を変数定義するだけで、異なるデザインのサイトが完成します。
保守性がめっちゃ上がりますよ。

まとめ

カスタムプロパティは、一見すると「ちょっと便利な機能」に見えるかもしれません。
でも実際に使ってみると、CSSの書き方が変わります。

特に以下の場面で活躍します:

  • 複数箇所で同じ値を使う場合の一括管理
  • ライトモード・ダークモード、テーマ切り替え
  • 複数のデバイスサイズに対応した値の調整
  • JavaScriptと組み合わせた動的なスタイル変更

僕も最初は「何でこんな面倒な書き方を?」と思ってました。
でも、修正作業が減り、バグが減り、新しい機能追加がスムーズになることで、その価値を実感しました。

今からコーディングを始める人も、既に現場で働いている人も、ぜひカスタムプロパティの活用を検討してみてください。
最初の設計に少し時間がかかりますが、それ以降の保守が本当に楽になります。

Web制作で困ったことがあったら、またこのブログを覗いてくださいね!

― クリオ