見出し画像

【web】:rootで変数を定義する

こんにちは、つちだにんじんです。
今回は、cssの「:root」について書きます。
実は私も最近知って、「はえー!便利ー!」と感動したばかりです笑

:rootについて

「:root」は、cssの擬似クラスの一つです。
擬似クラスは他にも「:hover」「::before」「::after」「:nth-of-type」などたくさんあって、セレクタに付与して使うものです。

今回は:rootを使って変数を定義する便利な方法を紹介します。
(cssの値のテンプレみたいなのが設定できるよ!という感じです)

変数の設定

コーディングの際に、いちいちXDやfigmaからカラーコードをコピーしてくるの面倒じゃないですか?
メインカラーを#cc3300の赤で指定してたけど、クライアントからの要望でその赤を#cc9999に変更して!となった時、全部書き換えて行くの面倒じゃないですか?
私は面倒です。(真顔)

そんな時便利なのが:rootです!
方法としては、

/* CSS */
:root{
--red: #cc3300;
}

これだけです!
これは、「--red=#cc3300」という指示です。
よく使用する色が他にもあれば、

/* CSS */
:root{
--red: #cc3300;
--blue: #000066;
--text: #330000;
}

など幾つでも変数を作成できます。
名前は自分のわかりやすいものでOKなので、上記のように「--text」とかでも大丈夫です。(確かプロパティ名は使えなかったはず・・・)
この作成した変数を呼び出すときは、

/* CSS */
text{
color: var(--red);
background: var(--blue);
}

のようにvar(変数名);を指定すればテキストのカラーは#cc3300で背景は#000066になります。

変数の値を変更する

先ほど書いたように、「やっぱり#cc3300の赤のとこは#cc9999に変えて」という変更があった場合、:rootなら一工程で全部変えられます!!!

そう、:rootの変数を変えるだけ。
説明すると、

<!--- HTML --->
<p>人の金で<span class="red">寿司</span>が食べたい。</p>
<div class="box-flex">
 <div class="red-box"></div>
 <div class="blue-box"></div>
 <div class="red-box"></div>
</div>
/* CSS */
:root{
 --red: #cc3300;
 --blue: #000066;
}
p .red{
 color: var(--red);  /* spanのテキストの色を--redに指定 */
 border-bottom: 1px solid var(--red); /* 下線の色を--redに指定 */
}
.red-box{
 background: var(--red); /* --redの色の四角 */
}
.blue-box{
 background: var(--blue); /* --blueの色の四角 */
}
.box-flex{
display: flex;
}


色はこんな感じで赤のところは--red、青のところは--blueになっています。
これの赤色だけ変えようとした場合、変更するのは
:root{
--red: #cc3300;
}
のカラーコードのみです。
この#cc3300を#ff3300に書き換えただけで、--redを指定していた部分の色は全部#cc9999にすり替わります!!
なんて便利!
このひと工程で

こんなふうに一気に赤の部分を変更できます。


私はこれを知ってから、この機能を狂ったように乱用しています。
覚えたてのものを使いたくなる、あの気持ちですね・・・(遠い目)

今回は色に関してのみに使用しましたが、50pxなどの値やフォントの種類なども変数として定義しておけるので、

:root{
--section-padding: 50px;
}

にしておけば各セクションのpaddingをこの変数を使って統一できますし、

:root{
--gothic: Arial, Helvetica, sans-serif;
}

にしておけば、いちいちフォント名を書かなくても--gothicで指定すればいいわけです。

可能性は無限大ですね!


私のHPです。
webグラフィックデザインイラスト制作などのお仕事がありましたら、ぜひこちらからお気軽にお問合せください!

いいなと思ったら応援しよう!