「CSSの変数を試してみる」のその(3)です。その(1)はこちら、その(2)はこちらです。
CSS変数の値をJavaScriptのグローバル変数と同じように扱うためには、「:root」で定義します。ここで定義した値はbody全体に継承されます。また、同じ変数の値を局所的に変更することもできます。もちろんグローバルな値は変化しません。
サンプルは、「:root」で「--myColor: #26b」と定義し、span要素のcolorに適用、boxの子要素のspan要素(サンプルテキスト1)に反映しています。 さらに下の階層にもspan要素があり、それぞれの親要素で「--myColor」の値を再定義しています。そのためサンプルテキスト2、サンプルテキスト3の色が変わりますが、再定義した要素の外にあるサンプルテキスト4の色は変わりません。
<div class="wrap"> <div class="box"> <span>サンプルテキスト1(boxの子要素span)</span> <div class="box2"> <span>サンプルテキスト2(box2の子要素span)</span> <div class="box3"> <span>サンプルテキスト3(box3の子要素span)</span> </div> </div> </div> <span>サンプルテキスト4(boxの外側のspan)</span> </div>
:root {
--myColor: #26b;
}
.box,.box2,.box3 {
background: #fff;
border: 4px solid #ddd;
padding: 10px;
}
.box {
width: 700px;
margin: 10px auto;
}
.box2 {
width: 500px;
margin: 10px 0 0 10px;
--myColor: red;
}
.box3 {
width: 300px;
margin: 10px 0 0 10px;
--myColor: green;
}
span {
color: var(--myColor);
}