📝 1. はじめに
CSSカスタムプロパティとは?
CSSカスタムプロパティ(通称:CSS変数)は、スタイルシート内で再利用可能な値を定義するための仕組みです。これにより、色、フォントサイズ、スペーシングなど、複数の場所で使われる値を一元管理でき、コードの再利用性と保守性が大幅に向上します。
カスタムプロパティを使うことで、スタイルの一貫性を保ちながら、効率的にWebデザインを構築できます。
🎬 2. CSSカスタムプロパティの基本
① カスタムプロパティの宣言
CSSカスタムプロパティは、--
(ダブルハイフン)で始まる名前を使って宣言します。通常は:root
セレクタでグローバルに定義しますが、特定の要素に対して定義することも可能です。
/* グローバルなカスタムプロパティ */
:root {
--primary-color: #3498db;
--font-size: 16px;
--margin: 20px;
}
- 解説
--primary-color
,--font-size
,--margin
はカスタムプロパティとして定義された変数です。これらの値を再利用することができます。
② カスタムプロパティの使用
カスタムプロパティを使用するには、var()
関数を使って参照します。var(--property-name)
の形式で書きます。
h1 {
color: var(--primary-color); /* 定義した色を使用 */
font-size: var(--font-size); /* 定義したフォントサイズを使用 */
margin: var(--margin); /* 定義したマージンを使用 */
}
- 解説
var(--primary-color)
のように、カスタムプロパティを参照することで、定義した値を適用できます。これにより、同じ値を何度も繰り返し使用する際にコードの重複を防げます。
💡 3. カスタムプロパティの活用法
① カスタムプロパティによるテーマ設定
カスタムプロパティを使って、簡単にサイトのテーマを切り替えることができます。例えば、ダークモードとライトモードの切り替えをカスタムプロパティで管理できます。
/* ダークモード */
:root {
--background-color: #333;
--text-color: #fff;
}
/* ライトモード */
[data-theme="light"] {
--background-color: #fff;
--text-color: #333;
}
body {
background-color: var(--background-color);
color: var(--text-color);
}
- 解説
data-theme="light"
を<body>
要素に追加することで、ライトモード用のカスタムプロパティが適用され、ダークモードとライトモードを簡単に切り替えることができます。
② メディアクエリと組み合わせて使用
カスタムプロパティは、メディアクエリと組み合わせて、異なる画面サイズに応じて異なるスタイルを適用するのにも役立ちます。
:root {
--font-size: 16px;
}
@media (min-width: 768px) {
:root {
--font-size: 18px; /* 画面幅が768px以上ならフォントサイズを変更 */
}
}
body {
font-size: var(--font-size);
}
- 解説
- 画面幅に応じてフォントサイズを変更するために、カスタムプロパティを活用しています。これにより、同じプロパティ名を使って異なるスタイルを簡単に管理できます。
🎥 4. カスタムプロパティの動的変更
① JavaScriptでカスタムプロパティを変更
カスタムプロパティは、JavaScriptを使って動的に変更することもできます。これにより、ユーザーのアクションに応じて、リアルタイムでスタイルを変更できます。
document.documentElement.style.setProperty('--primary-color', '#e74c3c');
- 解説
setProperty()
メソッドを使って、JavaScriptから直接カスタムプロパティの値を変更することができます。例えば、ユーザーがテーマを変更した際に、JavaScriptでカスタムプロパティを切り替えることができます。
② アニメーションにカスタムプロパティを使用
カスタムプロパティを使うことで、アニメーションの中で動的にプロパティ値を変更することができます。例えば、色のアニメーションを簡単に管理できます。
:root {
--background-color: #3498db;
}
@keyframes color-change {
0% {
background-color: var(--background-color);
}
100% {
background-color: #e74c3c;
}
}
div {
animation: color-change 3s infinite;
}
- 解説
@keyframes
内でカスタムプロパティを使用することで、アニメーション中に値が変化する効果を簡単に作成できます。
🧠 5. よくあるエラーと解決策
- カスタムプロパティが反映されない
- 解決策: カスタムプロパティを使用する場所で、
var()
関数を正しく使っているか確認してください。var(--property-name)
が正しい形式です。
- 解決策: カスタムプロパティを使用する場所で、
- カスタムプロパティが特定の要素でのみ有効
- 解決策: カスタムプロパティは定義された範囲内でのみ有効です。
--primary-color
などを:root
で定義すると、全体に適用されますが、特定の要素でしか使わない場合、その要素内でのみ有効となります。
- 解決策: カスタムプロパティは定義された範囲内でのみ有効です。
- カスタムプロパティのサポートされていないブラウザ
- 解決策: 最新のブラウザではほとんどサポートされていますが、古いブラウザではサポートされていないことがあります。ブラウザ互換性を確認して、サポートされていない場合はポリフィルを使用するか、代替手段を検討しましょう。
🚀 6. まとめ
- CSSカスタムプロパティを使うことで、スタイルシートをより効率的に管理できます。コードの重複を避け、再利用性と保守性が向上します。
- テーマの切り替えやレスポンシブデザインにも便利で、動的にスタイルを変更することも可能です。
- JavaScriptと連携すれば、インタラクティブなWebデザインが可能になり、ユーザー体験を向上させることができます。