概要
- OKLCH は人間の視覚に基づいた 新しいカラーモデル
- 他のカラーモデル(RGB, HSL, LCH等)との 違いと利点 を解説
- ガンマット やカラースペースの基礎知識
- 一貫した 明度・色合い の調整やグラデーション作成が容易
- CSSでの利用方法 やブラウザ対応・フォールバックも紹介
OKLCHとは何か
- OKLCH は 知覚的均一性 を重視した新しいカラーモデル
- 色を 人間の目の感覚 に合わせて表現
- 色操作や配色設計が 直感的 になるメリット
- RGB、HSL、LCH など従来モデルとの比較
- 色モデルは色を 数値や構造 で表現するための仕組み
ガンマットとカラースペースの基礎
- ガンマット は各カラーモデルで表現可能な 色域
- 代表的なガンマット: sRGB (Web標準)、 Display-P3 (最新デバイス用)
- カラースペースは ガンマット だけでなく ホワイトポイントや伝達関数 も定義
- 詳細は省略し、基本のみ解説
OKLCHの構造
- Lightness(明度) :0〜1または0%〜100%、 均等な明るさ変化
- Chroma(彩度) :色の強さ、 彩度に近い概念
- Hue(色相) :0〜360度で表現、 色合いの角度指定
- LCHとOKLCHの違いは 基盤とするカラースペース (OKLabを利用)
一貫した明度・色合いの実現
- 複数のボタン色を作る場合、 OKLCHならHueのみ変更で均一な印象
- HSL等従来モデル では明るさや鮮やかさが 不均一 になりやすい
- 視覚的に均一なカラーパレット 作成が容易
予測可能な色の階調
- 明度値のみ変更 で一貫した色の階調作成が可能
- 他モデルでは 色相や彩度がズレる 問題
- 例:OKLCHなら青色の階調が一貫、HSLでは薄い色が紫に、暗い色が灰色に近づく
グラデーションの違い
- sRGB ではRGB値で補間し、 中間色が濁りやすい
- OKLCH ではLightness, Chroma, Hueで補間し、 均一なグラデーション
- 始点と終点は同じでも 途中の色の見え方が大きく異なる
カラースペース対応
- sRGB では表現できない色も OKLCH で記述可能
- Display-P3 対応ディスプレイではより鮮やかな色
- 非対応環境 では自動でsRGB内にマッピング
- グレー系はsRGB/Display-P3で違いなし
最大Chroma値とガンマット外の色
- OKLCH は理論上、実際のディスプレイで表現不可な色も指定可能
- 例:oklch(0.7 0.4 40)は高Chroma値でガンマット外
- ガンマット外の色は自動でクリッピング され、意図と異なる色になる場合あり
- 最大Chroma値 の概念:Lightness, Hue, ガンマット(sRGB/Display-P3)に応じて最大値を計算
CSSでの利用とフォールバック
-
OKLCH はCSS Color Module Level 4で導入、 主要ブラウザで対応
-
古いブラウザ では未対応な場合も
-
@supports ディレクティブでsRGBとのフォールバック指定可能
- 例:
- sRGB(hex)を初期値に
- OKLCH対応時のみOKLCH値を上書き
- 例:
OKLCHツールと情報
- oklch.fyi :OKLCHカラーパレット生成やCSS変数変換ができるツール
- 質問は jakub@kbo.sk まで
- 追加情報は Twitter でも発信