この記事はCSSを勉強し直したい筆者が纏め直しつつ、CSSをより便利に書けるようになりたい方に向けた記事になります。
様々なCSSが使用できるようになってきた中で、カスタムプロパティ(設定用)としてよく活用される「:root」について振り返りたいです。
以下、茶番も兼ねていますが御覧ください。
CSSを書けるようになりたて猫とCSS極めたい猫
カチャカチャ…スッターン!!ほて、CSS書き終えたニャ!!
どれどれ…、ほてちゃんが書いたCSSはこれかミャ?
/** 特定の場所の設定をしたニャ **/
.cats_box {
color: #fff;
background: #000;
padding: 10px 20px;
}
.ruri_box {
color: #00ff00;
background: #000;
padding: 10px 20px;
}
.hotemaru_box {
color: #ff0000;
background: #000;
padding: 10px 20px;
}
おや?「background」と「padding」が同じ値だミャ。これは統一したい箇所かみゃ?
ほて、各要素だけ文字色を変えたいにゃ。背景色とパディングについてはデザイナーから統一するようにご指定受けたニャ~。
にゃるぺそ。それならこういう書き方はどうだみゃ?
/** カスタムプロパティとして指定するミャ **/
:root {
--main-bg-color: #000;
--box-padding: 10px 20px;
}
/** 特定の場所の設定をしたニャ **/
.cats_box {
color: #fff;
background: var(--main-bg-color);
padding: var(--box-padding);
}
.ruri_box {
color: #00ff00;
background: var(--main-bg-color);
padding: var(--box-padding);
}
.hotemaru_box {
color: #ff0000;
background: var(--main-bg-color);
padding: var(--box-padding);
}
ほてええぇぇぇええ?!何だニャこの「:root」って!!!しかも各要素のプロパティに謎の値が入ってるニャ!!
:rootに設定した各コードを呼び出すことによって、統一する箇所を一括管理できるミャ。これによって余白や色を変えたいというときに、各箇所を一つ一つ編集しなければならない、ということがなくなるニャ。
なるほどニャ。でも、一つ一つ違う値に変えなければならないってときはどうするニャ?
そのときは潔く設定しなおしミャ。そもそも統一した値を入れたいという設計だったのに一つ一つ変えなければ駄目ということは設計自体が破綻しているミャ。
とはいえ、細かい値を設定しすぎてもせっかくのカスタムプロパティも無駄になっちゃうから、ちゃんと考えて設定していくミャ。
ブラウザ対応もほぼ問題ないと思って良いミャ~。
まとめ:カスタムプロパティはSassで慣れていたけど:rootに設定で良いのかな
:rootはhtmlを指定することを示します。詳細度が高くはなりますがhtmlセレクタと同等の代物で、そこに対して変数を宣言しておくことが可能です。
変数を宣言しておくことで、html配下の要素に変数を呼び出すことが可能なる、というわけです。
同じようなことがSassでも行えていましたがCSSだけで書けるならこちらのほうがいいかなぁとは思いました。