🎨

Named Color をもっと使っていこう

2024/02/19に公開

概要

アプリケーションのカラーコード、皆さんどのように書いていますか?
一般的には #FF00CC など、hex コードを利用していると思いますが、それでも Named Color のメリットもあると思うので、Named Color の魅力とその理由についてまとめていこうと思います。よろしくお願いします。

「Hex Color」か「RGB(RGBA) Color」が優れているところ

元々 CSS では色指定に「Hex Color #00ff99」か「RGB(RGBA) rgb(244, 112, 132)」 などを使ってきていると思います。

これらの色指定には、Named Color には表せない微妙な色表現ができるという利点がありますが
、それに加えて「Hex Color」か「RGB(RGBA) Color」を使ったほうがよりコードはわかりやすいものになると思います。

ここで Named Color を使ったときの例を紹介します。この3色はそれぞれ赤系統の色になっていますが

color: IndianRed;
color: Salmon;
color: LightCoral;

見た時どうでしょう?赤系統の色であることはわかりますが、どれがより赤みが強いのか、より暗いのかブラウザで表示してみるまで判断することは出来ません。

一方で、この3色をHex Color Code で表現すると

color: #CD5C5C; // IndianRed
color: #FA8072; // Salmon
color: #F08080; // LightCoral

となります。ぱっとコードを見るだけで赤み具合、他の色の混ざり具合がわかります。

以上のように、「Hex Color」か「RGB(RGBA) Color」を使うことで、よりコードは見えやすくなってきています。

近年の色変数の使い方

近年の開発では、Webでは SASS/SCSS が主流となり(なっていると思っている)。以下のような定義が増えてきたのではないでしょうか。

$light-blue: #ADD8E6;
$white: #FFF;
$xxx-white: #EFEFEF;

そこで今回のブログタイトルに戻ってくるのですが、 $white: #fff; という変数定義は、本当に便利なのか、ということです。

$white が #FFFFFF と定義されているとき

さぁこの変数を使っている箇所の例を見てみると、以下のような形になると思います。

// 色名を変数に定義して利用する
$white: #FFFFFF;

.before-text {
  color: $white;
}

まず1点に、同じつづりを打つのに $ 必要になっていることもありますが、開発で一番困るのは
$white が本当に #FFFFFF を表現してるのか、定義元を見るまでわからないということがあります。

$white: #EFEFEF;

.before-text {
  color: $white; // このコードを見て `$white` が本当に `#FFFFFF` なのかわからない(特にファイルが違う場合)
}

結論、実装するときは?

基本的に Named Color と同じ名前の色変数はつくらず、サービス名の省略形など、プレフィックスをつけた命名にしましょう。
そして、 直感的に色がわかる Named Color と同じ値の色変数は使わず、Named Color を使いましょう。

$xxx-blue: #0f52ba;
$xxx-lightblue: #aee3e5;
h1 {
  color: $xxx-blue;
}

h2 {
  color: white;
}

終わりに

ということで color: white; をもっと使っていきましょう。
とはいえ、チームによっては色はすべて変数化したものを使う運用で統一する、というのもきっぱりしていて悪くもないと思っています。。何はともあれ、いろいろ頑張っていきましょう。

Ref

https://www.quora.com/Why-do-we-generally-use-hex-color-codes-instead-of-just-writing-the-color-names-in-HTML
https://www.scaler.com/topics/html-color-names/
https://web.dev/articles/howbrowserswork?hl=ja

P.S.

最初に作られた17の色変数ですら fuchsia 直感的にどんな色なのか全くわからないものもあった。

color name hex code
aqua #00ffff
black #000000
blue #0000ff
fuchsia #ff00ff
gray #808080
green #008000
lime #00ff00
maroon #800000
navy #000080
olive #808000
orange #ffa500
purple #800080
red #ff0000
silver #c0c0c0
teal #008080
white #ffffff
yellow #ffff00
ラブグラフのエンジニアブログ

Discussion