In CSS, you can specify colors using multiple formats—such as keywords, hexadecimal (Hex), RGB/RGBA, and HSL/HSLA—and the key is to choose the right one for your purpose while considering transparency and browser compatibility.
CSSでは、主に以下のような色の指定方法が用意されています。
red
, blue
, transparent
など#FFFFFF
, #000
, #FF5733
などrgb(255, 255, 255)
rgba(255, 255, 255, 0.5)
hsl(120, 100%, 50%)
hsla(120, 100%, 50%, 0.5)
lab()
, lch()
, color()
など、CSS Color Level 4/5 提案仕様これらを使い分けることで、効率的かつ柔軟にデザインを行えるようになります。
CSSには、あらかじめ定義された色名(キーワード)が存在します。
red
, blue
, green
, white
, black
など、ブラウザが標準的に認識するものcornflowerblue
, lightseagreen
など、CSS3で追加されたキーワードも多数transparent
(透明)、currentColor
(親要素から継承したcolor値を引き継ぐ)などキーワードは人間が直感的に認識しやすい反面、色の微調整がしにくいというデメリットがあります。特定のブランドカラーなど、正確な数値指定が必要な場合は、キーワードよりも数値指定が適しています。
CSSにおける非常に一般的な指定方法が、**16進数(Hex)**を用いた方法です。多くの場合、次の3パターンがあります。
#RRGGBB
形式#ffffff
(白)、#000000
(黒)、#ff5733
(オレンジ系)#RGB
形式で書ける場合がある#fff
は #ffffff
と同じ、#000
は #000000
と同じ#RRGGBBAA
形式#ffffff80
(半透明の白)16進数でAlphaチャネルを指定する場合の注意点
#RRGGBBAA
の最終2桁部分がアルファ値を表し、00(透明)〜FF(不透明)の16進数で示します。RGB(Red, Green, Blue)は、各色成分を0〜255の数値で表す方法です。
rgb(255, 255, 255)
は白、rgb(0, 0, 0)
は黒。より柔軟な色表現として、RGBA では最後にアルファ値(透明度)を追加できます。
rgba(255, 255, 255, 0.5)
は半透明の白。0
(完全透明)〜1
(不透明)の間で指定します。HSL(Hue, Saturation, Lightness)は、「色相 (Hue)」「彩度 (Saturation)」「明度 (Lightness)」の3つのパラメータで色を表現します。
Hue
(色相)は、0度〜360度までの角度で色を表す。0または360が赤、120が緑、240が青に相当。Saturation
(彩度)は 0%〜100% で表す。0%が無彩色(グレイ)寄り、100%が原色に近い鮮やかな色。Lightness
(明度)は 0%〜100% で表す。0%が黒、100%が白に近づく。HSLA は HSL にアルファ値(透明度)を加えたものです。
hsla(120, 100%, 50%, 0.3)
は、鮮やかな緑の30%透明になります。HSLのメリット
CSS Color Module Level 4/5以降では、LabやLCHなどの色空間も使えるようになってきました。これらはまだ最新仕様であり、ブラウザのサポートが十分ではない場合もありますが、今後普及が期待される色指定方法です。
lch(65% 100 40)
のように、Lightness (明度)、Chroma (彩度)、Hue (色相) で指定。color(display-p3 0.8 0.1 0.2)
のように、ディスプレイの色域に合わせて指定する方法。display-p3
はsRGBより広い色域を表現可能なモダンディスプレイ向けの色空間。※ただし、ブラウザごとに対応状況が異なるため、実務で使用する場合は常に 対応ブラウザの確認 が必要です。
opacity: 0.5;
といったプロパティを使う方法もあれば、rgba()
や hsla()
、#RRGGBBAA
のように色指定内で透明度を指定する方法もある。opacity
プロパティは要素全体(テキストや子要素も含む)を透過させるが、rgba()
/ hsla()
/ #RRGGBBAA
はあくまでも色自体の透過。重なりの処理が異なるので、用途に応じて使い分けが必要。linear-gradient()
や radial-gradient()
などのグラデーション指定にも RGBA/HSLA の透明度を組み合わせることで、半透明の色が重なり合う複雑な表現を実現可能。CSS
background: linear-gradient(
to right,
rgba(255, 0, 0, 0.5),
rgba(0, 0, 255, 0.5)
);
Webコンテンツのデザインでは、文字と背景のコントラストが十分であることがユーザーの可読性を左右します。特に、WCAG(Web Content Accessibility Guidelines) の基準に従い、コントラスト比(4.5:1 以上など)を確保することが推奨されます。
オンラインやエディタのプラグインなどで、色のコントラストチェックを簡単に行えるツールが多数存在します。デザイン段階での検証と、開発後の実際の表示を両面から確認することを推奨します。
CSS
:root {
--brand-color: #ff5733;
}
.header {
background-color: var(--brand-color);
}
ディスプレイごとに表示できる色域が異なるため、カラーマネジメント はWebサイトやアプリの見た目の統一を図るうえで重要です。
color()
関数を使って、Display-P3での色指定を行うなどの活用が考えられます。CSS Color Module Level 5には、2つの色を混ぜて新しい色を作る color-mix()
関数が提案されています。
color-mix(in oklch, red 50%, white 50%)
#RRGGBBAA
や color()
関数など、モダンな手法も視野に入れる。CSSで色を指定するのは非常に奥深い分野です。単に「色を塗る」というだけでなく、ユーザーの視認性、デザイナーとの連携、デバイスごとの色再現性、アクセシビリティなど多方面の考慮が必要となります。今回紹介した基本のHex/RGB/HSLから、より高度な新しい色空間の話題まで、それぞれの特徴を理解し、プロジェクトの目的や環境に応じて最適な方法を選択することが大切です。
ぜひ、実際に手を動かして試しながら、色の指定や調整を行い、デザインの幅を広げてみてください。色の扱いに慣れてくると、Webサイトやアプリの印象や使い勝手を大きく左右する、強力なデザイン武器として活用できるようになるはずです。