どうも!かけちまるです!
プログラミング言語で便利な変数。格納した値を使いまわせて重宝します。
実はCSSも変数を使うことができるのです。
フォントサイズやメインカラーを登録しておくと使い回せるし、後から変更があったときに修正箇所は1か所で済みます。
この記事では、
を解説します。
使い方を簡単に説明すると、ハイフン2つの変数名と適当なCSSプロパティーの値(例えば、--color: #ffffff;
)で変数を宣言します。
宣言した変数を使うにはvar()
関数(例えば、background-color: var(--color);
)で使うことができます。
詳しく見ていきましょう。
CSS変数はハイフン2つの変数名と適当なCSSプロパティーの値(例えば、--color: #ffffff;
)で変数を宣言します。
CSS変数の宣言方法は2つあります。
1つ目は変数の有効範囲を制限する宣言方法です。
次のように書きます。
CSSコピー.sample{ --color: #ffff00; }
2つ目はCSS全体に有効な宣言方法です。
こちらの宣言方法がよく使う方法と思います。
次のように書きます。
CSSコピー:root{ --color: #ffff00; }
宣言した変数を使うにはvar()
関数(例えば、background-color: var(--color);
)で使うことができます。
次のように書きます。
CSSコピー.sample{ background-color: var(--color); }
上記の書き方だと何らかの理由でCSS変数が定義されていなかった場合、意図しない表示になりそうです。
そんな時には代替値を設定しましょう。
次のように書きます。
CSSコピー.sample{ /* --colorが定義されていなければ#ffff00が適用される */ background-color: var(--color, #ffff00); }
CSS変数はJavaScriptでも操作できます。
ここでは、CSS変数の値を取得する方法と値を変更する方法を解説します。
仮にHTMLとCSSとJavaScriptは次のように書きます。
HTMLコピー<div class="sample"></div>
CSSコピー:root { --bg-color: #ff0000; } .sample { background-color: var(--bg-color); width: 50px; height: 50px; }
JavaScriptコピー// CSS変数の値を変更する const element = document.querySelector('.sample'); const style = getComputedStyle(element); const property = style.getPropertyValue('--bg-color').trim(); console.log(property); // #ff0000 // CSS変数の値を変更する document.documentElement.style.setProperty('--bg-color', '#0000ff');
実装サンプル
赤色のboxがJavaScriptによって青色に変わっているのが確認できるでしょうか?
IE以外は新しいバージョンであればサポートされているようですね。
IEを気にしなければ問題なく使えそうです。
以下の表がブラウザサポート状況です。※2022年1月8日時点
IE | Edge | Firefox | Chrome | Safari | iOS | Android | |
---|---|---|---|---|---|---|---|
–* | × | 15~ | 31~ | 49~ | 9.1~ | 9.3~ | 96~ |
var() | × | 16~ | 31~ | 49~ | 10~ | 10~ | 96~ |
最新のサポート状況は「Can I use」にて確認できます。
–* : https://caniuse.com/?search=–*
var() : https://caniuse.com/?search=var()
この記事では、CSS変数の使い方を解説してきました。
CSS変数を使いこなせるようになれば後から変更があっても1か所の編集で済むので保守性が高くなりそうですね。
おわり
フィードバックを送信
記事についてのフィードバックはTwitterかお問い合わせフォームから受け付けております。