赤と青を OKLCH で混合

同じ赤と青を oklch で混合すると、濁った灰紫ではなく鮮やかなマゼンタが得られます。知覚的な色混合の代表的なデモです。

Basics

詳細な説明

彩度の高い色を知覚的に混合する

補間色空間を srgb から oklch に切り替えると、同じ赤↔青の混合 結果が劇的に変わります:

.midpoint {
  background: color-mix(in oklch, red, blue);
}

濁った #7f007f の代わりに、鮮やかなマゼンタ・パープルが得られます。 OKLCH は L (知覚的明度)、C (彩度)、H (色相) を独立した軸に 分けているため、補間器は知覚的に直線的な経路を進めるのです。

OKLCH の実際の動作

OKLCH は 2020 年に発表された知覚的に均一な空間 OKLab の上に構築されて います。50/50 混合を要求すると:

  • L (明度) は平均化されます。
  • C (彩度) も平均化されます。両入力色が高彩度なので結果も高彩度を維持します。
  • H (色相) は色相環の 短い方 の弧を進みます。赤 (≈ 29°) から 青 (≈ 264°) へは、マゼンタ (≈ 327° / -33°) を経由します。

実用的な学び

デザイントークン、ホバー状態、テーマ派生色、ある色から別の色を導出する あらゆるコードパスのデフォルトを in oklch にしてください。 in srgb はレガシー互換性のために残します。

sRGB 版 と 並べて比較すると、違いが一目瞭然です。

ユースケース

デザインシステム、テーマ生成、ブランド色2つの「気持ちのよい」中間色が必要な場面のデフォルト選択肢。Tailwind v4、Radix、Material You が OKLCH を採用したのもこの理由です。

試してみる — CSS color-mix() Generator

フルツールを開く