CSS カスタムプロパティ
CSS で変数を定義し、スタイル全体で再利用できる仕組み
CSSフロントエンド
CSS カスタムプロパティとは
CSS カスタムプロパティ (CSS Variables) は、-- プレフィックスで変数を定義し、var() で参照する仕組みである。Sass の変数と異なり、ランタイムで動的に変更でき、JavaScript からもアクセスできる。
基本的な使い方
基本的な使い方の例を示す。
:root {
--color-primary: #3b82f6;
--color-text: #1f2937;
--spacing-md: 1rem;
--radius-md: 0.5rem;
}
.button {
background: var(--color-primary);
color: white;
padding: var(--spacing-md);
border-radius: var(--radius-md);
}
ダークモード
ダークモードの例を示す。
:root {
--bg: #ffffff;
--text: #1f2937;
--border: #e5e7eb;
}
[data-theme="dark"] {
--bg: #111827;
--text: #f9fafb;
--border: #374151;
}
body { background: var(--bg); color: var(--text); }
.card { border: 1px solid var(--border); }
// JavaScript でテーマを切り替え
document.documentElement.dataset.theme = 'dark';
カスタムプロパティはカスケードに従うため、親要素で値を変更すると子要素に伝播する。
Sass 変数との比較
Sass 変数との主な違いを以下に比較する。
| 観点 | CSS カスタムプロパティ | Sass 変数 |
|---|---|---|
| 動的変更 | ✅ (ランタイム) | ❌ (ビルド時に解決) |
| カスケード | ✅ (継承される) | ❌ |
| JavaScript アクセス | ✅ | ❌ |
| メディアクエリ内で変更 | ✅ | ❌ |
| フォールバック | var(--x, fallback) | なし |
レスポンシブデザイン
レスポンシブデザインの例を示す。
:root {
--container-width: 1200px;
--font-size-base: 1rem;
}
@media (max-width: 768px) {
:root {
--container-width: 100%;
--font-size-base: 0.875rem;
}
}
.container { max-width: var(--container-width); }
body { font-size: var(--font-size-base); }
コンポーネントスコープ
コンポーネントスコープの例を示す。
.card {
--card-padding: 1.5rem;
--card-radius: 0.75rem;
padding: var(--card-padding);
border-radius: var(--card-radius);
}
.card--compact {
--card-padding: 0.75rem;
--card-radius: 0.375rem;
}
JavaScript からのアクセス
JavaScript からのアクセスのコード例を示す。
// 値の取得
const primary = getComputedStyle(document.documentElement)
.getPropertyValue('--color-primary');
// 値の設定
document.documentElement.style.setProperty('--color-primary', '#ef4444');
フォールバック
フォールバックの例を示す。
.text { color: var(--color-accent, #3b82f6); }
/* --color-accent が未定義なら #3b82f6 を使用 */
CSS カスタムプロパティの背景や設計思想は関連書籍に詳しい。
この記事は役に立ちましたか?
関連用語
CSS Grid
2 次元のグリッドレイアウトを宣言的に定義する CSS のレイアウトシステム
Flexbox
1 次元の柔軟なレイアウトを実現する CSS のレイアウトモデル
Tailwind CSS
ユーティリティファーストの CSS フレームワークで、クラス名の組み合わせでスタイルを構築する
CSS Modules
CSS ファイルのクラス名を自動的にスコープ化し、名前衝突を防止する CSS のモジュール化手法
CSS-in-JS とは - styled-components/Emotion の仕組みと選定基準
CSS-in-JS は JavaScript 内で CSS を記述しコンポーネントスコープのスタイルを実現する手法。ランタイム型とゼロランタイム型の違い・パフォーマンス比較を解説
CSS
Web ページの見た目を定義する言語。レイアウト・色・装飾を担う