CSS変数・SASS変数で管理している色の命名規則

CSS変数・SASS変数で管理している色の命名規則
悩めるコーダー

色の候補が枯渇した…

悩めるコーダー

どこで使用している色なのかわからなくなった…

CSS変数またはSASS(SCSS)変数を用いて色を管理する際、命名規則に悩んだことはないでしょうか?

変数で色を管理する際、適切な命名規則がなければ、プロジェクトが大きくなるにつれてコードが煩雑化し、作業効率も低下してしまいます。

この記事では、そのような状況を避けるため、コーダー兼デザイナーでもある筆者が多くのWebサイト制作を通じて改良を重ねてきた、命名規則を紹介します。

できる限り汎用性が高くなるよう設計したので悩んでいる方はぜひ一度お試しください。

目次

今回紹介する命名規則に至るまでの経緯

筆者はこれまでいくつかの命名規則を試してきました。

まずは、これまでの試行例とそれぞれの問題点について解説していきます。

試行例1:デザインの配色における基本を変数名にする

変数を使用し始めた頃は、下記のようにデザインの配色の基本であるメイン、ベース、アクセントを採用しました。

:root {
  --color-base: #333;
  --color-main: #007b43;
  --color-accent: #897520;
}

しかし、この命名規則は下記の問題があり瞬く間に不採用となりました。

  • 対応できる色数が3~4色しかなく候補がなくなる
  • メインとベースの使い分けがイマイチわかりにくい

試行例2:色の名称をそのまま変数名にする

次に候補がなくなることを防ぐため、色名をそのまま変数名にし、同系色は連番で対応するという下記のような命名規則を採用しました。

:root {
  --color-black: #333;
  --color-black2: #2c2c2c;
  --color-white: #fff;
}

こちら当初は上手くいっていましたが、規模の大きいサイトや公開後の更新作業時などに、下記のような問題があり不採用となりました。

  • 似たような色が多く、連番が増えていった際、呼び出し時にどの番号に設定したのかわからなくなる
  • 影響範囲がどこまであるのか不明確となり、管理がし辛い

試行例3:用途に合わせた接頭辞を付ける

試行例2の問題を解決するため下記のように使用箇所に合わせた接頭辞を付けることにしました。

:root {
  --color-text: #333;
  --color-bg: #fff;
}

ですが、こちらも下記のような理由で不採用となりました。

  • textやbgなど使用箇所を限定しすぎるとほかの箇所で使えなくなる
  • 使用箇所は同じでも明暗を変えたい場合に対応できない

そしてこれらの問題点を解決して設計したのがこれから紹介する命名規則になります。

筆者が現在使用している色の命名規則

先ほどの経緯を踏まえて設計した命名規則がcolor-{接頭辞}--{明暗}という形になります。

具体的には下記のようにCSS変数を定義します。(SASS変数を使用している方は--部分を$に置き換えてください。)

:root {
  --color-contrast: #fff;
  --color-contrast--dark: #f3f3f3;
}

ポイントは下記の通りです。

  • colorを先頭に付けることで色を定義していることを明確にする。
  • 接頭辞には色の用途を大まかに区別し、影響範囲を理解するための名称を付ける。
  • 明暗はモディファイア的な役割で、似たような色(役割)で明暗が異なる場合に使用する。

接頭辞の付け方

命名規則で使用する接頭辞は以下のように設定します。

接頭辞使用箇所
base主に文字色として使用します。
contrast主に背景色として使用します。
mainメインカラーとして使用される色に使用します。
accentメインとは独立して目立たせたい色に使用します。
separateボーダーや区切り線などコンテンツ同士を分割する色に使用します。
primaryメインカラーの次に主要な色に使用します。
secondaryプライマリーの次に主要な色に使用します。使用頻度は少ないです。
tertiaryセカンダリーの次に主要な色に使用します。使用頻度は少ないです。
successフォームの入力が成功したことを示す場合など何か成功したことを示す箇所の色に使用します。基本的には緑系統の色が使われます。
warning警告や注意喚起を示す色に使用します。基本的には黄色やオレンジ系統の色が使われます。
errorエラーを示す色に使用します。基本的には赤系統の色が使われます。
inactive非活性状態やプレースホルダーなど、ユーザーが操作できない状態を示す色に使用します。
linkリンクを示す色に使用します。基本的にはメインやアクセントカラーを使うことが多いですが、リンク用に別途色が設定されている際に使用します。

base、contrast、main、accent、separateは基本的にどのサイトでも使用するかと思います。

また、success、warning、error、inactive、linkはUIデザインが優れているサイトでは設定する機会が多いです。特にお問い合わせフォームのようなユーザーとのやり取りが発生する箇所で活躍します。

明暗の付け方

明暗は、各色に対して異なる明るさを表現するために使用します。特に背景色はセクションの区切りに明暗を変えることが多いため使用機会が多いかと思います。

下記のように定義することで今のところは対応できています。

明暗説明
lightest指定色より最も明るい
lighter指定色よりさらに明るい
light指定色より明るい
dark指定色より暗い
darker指定色よりさらに暗い
darkest指定色より最も暗い

まとめ

今回はCSS変数・SASS変数で管理している色の命名規則についてご紹介しました。

color-{接頭辞}--{明暗}という形で命名をしていけば汎用性高く、管理もしやすいかと思いますが、プロジェクトの規模や概要によってはそれでも対応しきれない場合が出てくるかもしれません。

著者自身もさらに改良を重ねていくつもりですが、皆様も今回の命名規則を参考により良い規則を設計してみてはいかがでしょうか。

ボタンをクリックしてシェアする
目次