CSSで変数が使えると話題になってから久しいですが、いつの間にか対応ブラウザが増えてきました。
IE11が未対応なので使いづらいのですが、そろそろ、CSS変数(CSSカスタムプロパティ)に目を通しておいたほうがいいかもしれませんね!
CSS変数(CSSカスタムプロパティ)の基本的な使い方
:root { --base-color: #ffff00; } .content { color: var(--base-color); }
上の例のように変数の先頭に「–」(ハイフン2つ)を付けます。
これで、変数の定義がされます。
「:root」内に変数を定義することで、cssを読み込んだ全ての要素で変数が使えるようになります。
変数を呼び出す時には、var()関数を使います。
「color: var(–base-color);」のように、指定した変数を()の中に入れるだけです。
See the Pen css 変数(1) by naoto saito (@code_ns) on CodePen.
テキストが青色になりました。
基本的な使い方はとてもシンプルですね!
CSS変数とメディアクエリ
変数のみなら、Sassでもいい気がするのですが、動的に値が変わるのもcss変数を書くメリットです。
下記の例は、幅400pxで2カラムと4カラムを切り換えています。
(別ウィンドウで確認してください。)
See the Pen CSS 変数(2) by naoto saito (@code_ns) on CodePen.
JSでの操作
Sassと違い、CSS変数であれば、JavaScriptで値を取得したり、変更したりできます。
下記の例では青色に指定したテキストをJavaScriptで変数を変更し赤色に変更しています。
See the Pen CSS 変数(3) by naoto saito (@code_ns) on CodePen.
この例だとテキストの色を1箇所変えるだけなので、メリットは感じられないかもしれませんが、次のように変更箇所が何箇所も出てくる場合に便利さを感じられるかもしれません。
(Choose a theme colorの右のボックスで色の変更)
See the Pen Theming a site with CSS Custom Properties by Chris Coyier (@chriscoyier) on CodePen.
このように、もしIE11で使えるようになったら、CSSの管理やJavaScriptとの連携が、さらに簡単になりそうです。