CSSで色を表現するいろいろな指定の方法
2023年 7月12日 Posted 野々瀨(フロントエンドエンジニア)
CSSにはさまざまな色を表現するための方法が幾つか存在します。CSSでどのようにして色を指定するのか、軽くご紹介します。
ネームカラー(名前付きの色)
ネームカラー(名前付きの色)は、色を英単語(キーワード)で表したもので、各色の名称を指定することで色を表現することができます。例えば、red
と指定すれば赤、lightgreen
と指定すれば明るい緑、skyblue
と指定すれば薄い青(空色)といった感じです。
/* 赤 */
.sample1 {
background-color: red;
}
/* 明るい緑 */
.sample2 {
background-color: lightgreen;
}
/* 薄い青(空色) */
.sample3 {
background-color: skyblue;
}
CSS Color Module Level 4では、150近くのネームカラーが定義されています。詳しくはW3CのCSS Color Module Level 4ページをご覧ください。
transparentとcurrentColor
CSSにはtransparent
とcurrentColor
という、特殊な色を表すネームカラーが存在しています。
transparentキーワードは透明を表すネームカラーで、ブラウザーでは基本的にRGBAのrgba(0, 0, 0, 0)
と同等の表現をします。
currentColorキーワードはテキストの色であるcolor
プロパティと同じの色を適用できるネームカラーです。対象の要素に直接colorプロパティが指定されていない場合は、直近の継承されているcolorプロパティの色が反映されます。
/* 自身の色 */
.sample1 {
border: 1px solid currentColor;
color: red;
}
/* 継承 */
.sample2 {
color: red;
}
.sample2 p {
border: 1px solid currentColor;
}
関連リンク
10進数カラー(RGB / RGBA)
10進数カラーは光の三原色(加法混色)である赤、緑、青の色を、それぞれ0から255の間の数字で表した色です。
CSSではrgb
関数を使って、rgb(赤, 緑, 青)
で指定します。
.sample {
background-color: rgb(255, 153, 51);
}
また、不透明度(アルファチャンネル)を与えることもでき、0から1の間の数字か、0%~100%の間のパーセンテージで指定します。
CSSではrgba
関数を使って、rgb(赤, 緑, 青, 不透明度)
で指定します。
.sample {
background-color: rgba(255, 153, 51, 0.75);
}
関連リンク
16進数カラー(HEX / HEXA)
16進数カラーは光の三原色(加法混色)である赤、緑、青の色を、それぞれ0からFの間の16進数で表した色です。
CSSではシャープを先頭に付けた#RRGGBB
で指定します。それぞれの色は2桁で指定し、00、01……となり、09の次は0a、そして0fの次が10となります。 また、全ての色がそれぞれ00のように同じ値となる場合は、1桁に省略することができ、#RGB
とすることができます。
.sample {
background-color: #f29a36; /* 赤がf2、緑が9a、青が36 */
}
/* 2桁が同じ値の場合 */
.sample {
background-color: #f93; /* #ff9933 */
}
また、不透明度(アルファチャンネル)を与えることもでき、こちらも0からFの間で指定します。#RRGGBBAA
と最後の値に指定します。
.sample {
background-color: #f29a36bf; /* 赤がf2、緑が9a、青が36、不透明度がbf */
}
/* 2桁が同じ値の場合 */
.sample {
background-color: #f93b; /* #ff9933bb */
}
なおアルファベットは、大文字・小文字の区別はなく、どちらで指定しても問題ありません。
関連リンク
HSL / HSLA
HSLは色相(Hue)、彩度(Saturation)、光度(Luminosity)のことで、色相を0degから360deg、彩度を0%から100%、光度を0%から100%で表した色です。
CSSではhsl
関数を使って、hsl(色相, 彩度, 光度)
で指定します。
.sample {
background-color: hsl(30deg, 100%, 60%);
}
また、不透明度(アルファチャンネル)を与えることもでき、0から1の間の数字か、0%~100%の間のパーセンテージで指定します。
CSSではhsla
関数を使って、hsla(色相, 彩度, 光度, 不透明度)
で指定します。
.sample {
background-color: hsla(30deg, 100%, 60%, 0.75);
}
関連リンク
LAB
LABは球体のXYZ軸で表した色です。
輝度(Lightness)はY軸で0%から100%、a(赤から緑)はX軸で-160から160の距離、b(青から黄)はZ軸で-160から160の距離で表されています。ちなみにaとbの指定可能な値は、無制限に指定できますが、実際には-160から160の範囲でしか変化しません。
CSSではlab
関数を使って、lab(輝度 a b)
で指定します。(引数はスペースで区切っていることに注意してください。)
.sample {
background-color: lab(70 50 104);
}
また、不透明度(アルファチャンネル)を与えることもでき、0から1の間の数字か、0%~100%の間のパーセンテージで指定します。
CSSではlab
関数を使って、lab(色相 彩度 輝度 / 不透明度)
で指定します。
.sample {
background-color: lab(70 50 104 / 0.75);
}
関連リンク
HWB
HWBは、色相(Hue)、白色度(Whiteness)、黒色度(Blackness)のことで、色相を0degから360deg、白色度を0%から100%、黒色度を0%から100%で表した色です。
CSSではhwb
関数を使って、hwb(色相 白色度 黒色度)
で指定します(引数はスペースで区切っていることに注意してください)。
.sample {
background-color: hwb(25deg 10% 0%);
}
また、不透明度(アルファチャンネル)を与えることもでき、0から1の間の数字か、0%~100%の間のパーセンテージで指定します。
CSSではhwb
関数を使って、hwb(色相 白色度 黒色度 / 不透明度)
で指定します。
.sample {
background-color: hwb(25deg 10% 0% / 0.75);
}
なお、色相の指定は他の角度の単位(rad、grad、turn)も指定することができ、また単位を省略すると角度として解釈されます。
関連リンク
LCH
LCHは、輝度(Lightness)、彩度(Chroma)、色相(Hue)のことで、輝度を0%から100%、彩度を0から230、色相を0degから360degで表した色です。
CSSではlch
関数を使って、lch(輝度 彩度 色相)
で指定します(引数はスペースで区切っていることに注意してください)。
.sample {
background-color: lch(70% 100 65deg);
}
また、不透明度(アルファチャンネル)を与えることもでき、0から1の間の数字か、0%~100%の間のパーセンテージで指定します。
CSSではlch
関数を使って、lch(輝度 彩度 色相 / 不透明度)
で指定します。
.sample {
background-color: lch(70% 100 65deg / 0.75);
}