CSSWringに、HEX色コードと色キーワードのどちらか短い方を使う機能を実装するために調査した。32種類あるみたいだ。
色プレビュー | 色名 | HEX |
---|---|---|
azure | #F0FFFF |
|
beige | #F5F5DC |
|
bisque | #FFE4C4 |
|
brown | #A52A2A |
|
coral | #FF7F50 |
|
gold | #FFD700 |
|
gray | #808080 |
|
green | #008000 |
|
grey | #808080 |
|
indigo | #4B0082 |
|
ivory | #FFFFF0 |
|
khaki | #F0E68C |
|
linen | #FAF0E6 |
|
maroon | #800000 |
|
navy | #000080 |
|
olive | #808000 |
|
orange | #FFA500 |
|
orchid | #DA70D6 |
|
peru | #CD853F |
|
pink | #FFC0CB |
|
plum | #DDA0DD |
|
purple | #800080 |
|
red | #FF0000 |
|
salmon | #FA8072 |
|
sienna | #A0522D |
|
silver | #C0C0C0 |
|
snow | #FFFAFA |
|
tan | #D2B48C |
|
teal | #008080 |
|
tomato | #FF6347 |
|
violet | #EE82EE |
|
wheat | #F5DEB3 |
おおまかに6文字以下なら短くなるんだけど、一部black
などは#fff
とHEX色コードを省略できるため、色キーワードの方が長くなる。更に例外としてred
のみ#f00
よりも短くなる。
実装すること自体はそんなに面倒でもない。けどこれを実装すると、色キーワードを切り出してHEX色コードにするとか逆もやらなくちゃならなくなりそうで面倒くさい。
HEX色コードから色キーワードだけはとにかく実装した。rgb()
(hsl()
)→HEX色コード→色キーワードもちゃんと機能するので、rgb(240, 230, 140)
とかhsl(54, 76.9%, 74.5%)
と書くとkhaki
に変換されるようになった。
最初、色変換に使っているone-colorパッケージが内部に持っている色キーワードのリストを変換して変換テーブルを生成しようかと考えていたんだけど、プライベートな変数でアクセスできなかった……。
var shortColors = {};
Object.keys(namedColors).forEach(function (name) {
var hex = '#' . namedColors[name];
if (name.length < hex.length) {
shortColors[hex] = name;
}
});