CSSカスタムプロパティ(変数)の使い方【初心者向け】

CSS変数(カスタムプロパティ)の使い方を初心者向けに解説。--変数名での定義・var()での使用・:rootでのグローバル定義・テーマカラー管理をコード例で紹介。中高生向け。無料。

2026年4月16日

CSS 変数(カスタムプロパティ)とは?

「サイトのメインカラーを変えたいとき、CSSファイルの何十か所も書き換えないといけない…」という経験はありませんか?

CSSカスタムプロパティ(CSS変数)を使うと、色やサイズなどの値を変数として定義し、1か所変えるだけで全体に反映できます。

プログラミングの「変数」と同じ考え方です。「この色には --color-primary という名前をつける」と決めておいて、いろんな場所でその名前を使います。後から色を変えたくなったら、定義を1か所だけ直せばOKです。

💡 カスタムプロパティの2大メリット

  • 1か所変えるだけで全体に反映される(保守がラク)
  • JavaScriptからも値を読み書きできる(テーマ切り替えなど)

CSSの基本がまだ不安な人は「CSSとは?初心者向けにわかりやすく解説」を先に読んでおきましょう。

カスタムプロパティの定義と使い方

変数は --変数名: 値; の形で定義し、var(--変数名) で使います。変数名は必ず --(ハイフン2つ)から始めます。

/* :root に定義するとページ全体で使える */
:root {
  --color-primary: #0d9488;   /* メインカラー */
  --color-bg: #f0f9ff;        /* 背景色 */
  --font-size-base: 16px;     /* 基本フォントサイズ */
  --border-radius: 8px;       /* 角の丸み */
  --spacing-md: 16px;         /* 中くらいの余白 */
}

/* var() で使う */
.btn {
  background-color: var(--color-primary);
  border-radius: var(--border-radius);
  padding: var(--spacing-md);
}

body {
  background-color: var(--color-bg);
  font-size: var(--font-size-base);
}

▶ プレビュー

:root はページ全体を指す特別なセレクタです。ここに定義した変数は、CSSファイルのどこからでも使えます。

🔗 あわせてCSS詳細度(優先順位)もチェックしてみましょう。

テーマカラーの管理に使おう

実際のWeb制作で最もよく使われる用途が「テーマカラーの管理」です。サイト全体のカラーを変数で管理すると、1か所変えるだけで全体に反映されます。

変数なしのCSSの問題点

/* ❌ 変数なしだとカラーが散らばる */
.header { background-color: #0d9488; }
.btn-primary { background-color: #0d9488; }
.link { color: #0d9488; }
.border-accent { border-color: #0d9488; }
/* → 色を変えたいとき、全部書き換えないといけない! */

変数ありのCSS(おすすめ)

/* ✅ 変数ありなら1か所を変えるだけでOK */
:root {
  --color-primary: #0d9488;
}

.header { background-color: var(--color-primary); }
.btn-primary { background-color: var(--color-primary); }
.link { color: var(--color-primary); }
.border-accent { border-color: var(--color-primary); }
/* → --color-primary の値を1か所変えるだけで全部変わる! */

📖 詳しくはCSS問題ドリルで解説しています。

ダークモードの実装

カスタムプロパティを使うと、ダークモード(画面を暗くする表示)も簡単に実装できます。

:root {
  --primary: #0d9488;
  --primary-dark: #0f766e;
  --text: #1f2937;      /* 通常は濃い色の文字 */
  --bg: #ffffff;        /* 通常は白い背景 */
  --card-bg: #f8fafc;
}

/* ダークモード(システムの設定に従って自動で切り替わる) */
@media (prefers-color-scheme: dark) {
  :root {
    --text: #f9fafb;    /* ダークモードでは明るい文字 */
    --bg: #111827;      /* ダークモードでは暗い背景 */
    --card-bg: #1f2937;
  }
}

prefers-color-scheme: dark は、ユーザーのOSやブラウザがダークモードに設定されているか確認します。変数の値を上書きするだけで、サイト全体がダークモードに切り替わります。

フォールバック値の設定

var(--変数名, フォールバック値) の形で、変数が未定義のときのデフォルト値を指定できます。

.btn {
  /* --color-accent が未定義なら #f59e0b を使う */
  background-color: var(--color-accent, #f59e0b);

  /* ネストも可能 */
  color: var(--btn-text, var(--text, #1f2937));
}

フォールバック値を設定しておくと、変数が何らかの理由で読み込まれなかった場合でも安全です。

👉 CSSで色を指定する方法も参考にしてください。

スコープ(範囲)を限定する

変数は :root に定義するとページ全体で使えますが、特定の要素の中だけで使う変数も作れます。

/* グローバル変数(ページ全体で使える) */
:root {
  --color-primary: #0d9488;
}

/* ローカル変数(.cardの中だけで有効) */
.card {
  --card-padding: 24px;   /* .card の中だけで使える変数 */
  padding: var(--card-padding);
}

/* .card の子要素からも使える */
.card .card__title {
  margin-bottom: calc(var(--card-padding) / 2);
}

このように、コンポーネント(部品)ごとに変数をまとめると、デザインの管理がしやすくなります。

JavaScriptからカスタムプロパティを操作する

カスタムプロパティはJavaScriptからも読み書きできます。これを利用してボタンでテーマカラーを切り替える機能を作れます。

// カスタムプロパティの値を取得
const root = document.documentElement;
const primaryColor = getComputedStyle(root)
  .getPropertyValue('--color-primary').trim();
console.log(primaryColor); // #0d9488

// カスタムプロパティの値を変更
root.style.setProperty('--color-primary', '#2563eb'); // 青に変更

// テーマ切り替えボタンの例
document.getElementById('theme-btn').addEventListener('click', () => {
  const current = getComputedStyle(root)
    .getPropertyValue('--color-primary').trim();

  if (current === '#0d9488') {
    root.style.setProperty('--color-primary', '#dc2626'); // 赤
  } else {
    root.style.setProperty('--color-primary', '#0d9488'); // 元に戻す
  }
});

💡 JavaScriptとの連携でできること

  • ボタンでテーマカラーを切り替える
  • スライダーで文字サイズを変更する
  • ダークモード/ライトモードの手動切り替え

よくある失敗と対策

失敗1:変数名のハイフン2つを忘れる

-color-primary(ハイフン1つ)ではなく --color-primary(ハイフン2つ)が正しい書き方です。ハイフンが1つだと変数として認識されません。

失敗2:var()の括弧を忘れる

color: --color-primary; ではなく color: var(--color-primary); が正しいです。var() 関数で包む必要があります。

失敗3:スコープを忘れる

ある要素の中にだけ変数を定義した場合、その外からはアクセスできません。どこからでも使いたい変数は :root に定義しましょう。

まとめ

  • CSSカスタムプロパティ--変数名: 値 で定義する
  • var(--変数名) で使う
  • :root に定義するとページ全体で使える
  • ✅ テーマカラーを変数で管理すると、1か所変えるだけで全体に反映される
  • var(--変数名, デフォルト値) でフォールバックを設定できる
  • ✅ ダークモードも変数の上書きだけで簡単に実装できる
  • ✅ JavaScriptからも読み書きでき、テーマ切り替えに活用できる

CSSカスタムプロパティを使うと、保守しやすいCSSが書けます。レッスンでさらに詳しく学んでみましょう。

🎛️ CSS Variables を動かして体感しよう!

6つのカスタムプロパティをリアルタイム編集。プリセット4種・スコープ切替でvar()の仕組みを直感的に理解できます。

CSS Variables プレイグラウンド →

あわせて読みたい記事

🎨 CSSをレッスンで学ぼう!

このサイトのCSSコースでは、カスタムプロパティを含む実践的なデザインをブラウザだけで学べます。無料・登録不要です。

CSSコースを見る →
目次

コースで実際に手を動かして学ぼう

レッスンではコードを書きながら基礎が身につきます

HTMLコースを始める →

この記事に出てくる用語

📣 この記事が役に立ったら

Xでシェア

💬 引用する場合はこちらをご利用ください:

CSS変数(カスタムプロパティ)の使い方を初心者向けに解説。--変数名での定義・var()での使用・:rootでのグローバル定義・テーマカラー管理をコード例で紹介。中高生向け。無料。

出典: https://start-web-programming.com/blog/css-custom-property/