【シーエスエスカスタムプロパティ】

CSSカスタムプロパティ とは?

最終更新:
💡 CSSに「変数」の力を与えた、スタイル管理の革命児

CSS内で変数のように値を定義・再利用できる仕組み。--で始まる名前で宣言し、var()関数で参照する。テーマカラーの一括変更やコンポーネント単位のスタイル管理に活躍する。

📌 このページのポイント
CSSの値を名前で再利用する :root で宣言 --main-color: #4A90D9; var(--main-color) で参照 ボタンの背景色 送信 background-color カードの枠色 お知らせ border-color .alert で同じ名前を上書き その要素と子孫は別の値にできる 参照する値は要素ごとに決まる
通常の--宣言の例。:rootの値を継承して参照し、要素側で上書きできる。固定色を使う箇所まで自動で変わるわけではない。
ひよこ ひよこ
CSSに変数なんてあるの?
ペンギン先生 ペンギン先生
--main-color: #4A90D9;と宣言し、color: var(--main-color);で参照するよ。同じ値を使う箇所をまとめて変更できる。ただし、その要素に適用される値を参照するので、別の場所で上書きされた値まで必ず同じになるわけではないんだ。
ひよこ ひよこ
Sassの変数と何が違うの?
ペンギン先生 ペンギン先生
Sassの変数はコンパイルで普通のCSSの値になるけれど、CSSカスタムプロパティはCSSに残り、ブラウザで要素ごとの値が決まるよ。通常の--宣言は親から継承されるので、特定の要素に書いても、その子孫へ値が届く。単純なローカル変数とは違うね。
ひよこ ひよこ
ダークモードの切り替えに使える?
ペンギン先生 ペンギン先生
使えるよ。たとえば:rootで--bg-color: #fff;を定義し、body.dark-themeで--bg-color: #222;と上書きする。背景にはbackground-color: var(--bg-color);を使い、bodyのクラスを切り替えるんだ。固定色や別の上書きがある箇所は自動で同じテーマにはならないよ。
ひよこ ひよこ
var()にフォールバックを書けるって本当?
ペンギン先生 ペンギン先生
var(--accent, orange)なら、--accentが未定義などで使えない場合にorangeを使えるよ。ただし--accent: 16px;をcolorに使うような、参照後に用途に合わない値までorangeへ直してくれるわけではない。カスタムプロパティ自体が使えるかと、参照先に合う値かは別なんだ。
ひよこ ひよこ
@propertyを使うと速くなるの?
ペンギン先生 ペンギン先生
@propertyは型や初期値、継承するかどうかを登録する仕組みだよ。型に沿ったアニメーションにも使えるけれど、付ければ必ず速くなるわけではない。値を変える範囲や頻度、影響するスタイルによって処理量は変わるので、必要なら実際の画面で測るんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CSSカスタムプロパティ」って出てきたら「CSSで使える変数のこと」と思えばだいたいOK!
📖 おまけ:英語の意味
「CSS Custom Properties」 = CSSの独自定義プロパティ
💬 CSS変数とも呼ばれるよ。--で宣言する値にもCSSのカスケードと継承が働くので、要素ごとに値を変えながら再利用できるんだ

参考資料

← 用語集にもどる