Relative Color Syntax — color-mix() の姉妹機能

Relative Color Syntax (oklch(from var(--brand) calc(l + 0.1) c h)) が、単一色のチャネル単位演算でどのように color-mix() を補完するかを学びます。

Advanced

詳細な説明

color-mix() では足りないとき

color-mix()2 つ の色を補間します。一部の操作は 1 つ の 色を特定の軸に沿って操作する必要があります — 明度を上げる、彩度を半分に する、色相を回転させる、など。これが Relative Color Syntax (RCS) の 役割です:

:root {
  --brand: oklch(0.62 0.21 254);
}

.lighter { color: oklch(from var(--brand) calc(l + 0.1) c h); }
.muted   { color: oklch(from var(--brand) l calc(c * 0.5) h); }
.shifted { color: oklch(from var(--brand) l c calc(h + 30)); }

from キーワードがソース色をスコープに持ち込み、そのチャネル (OKLCH なら l, c, h、RGB なら r, g, b) を露出させ、 calc() で変換できるようにします。

color-mix() ではなく RCS を選ぶとき

用途 使うもの
2 色を平均化 color-mix()
明度を 10% 上げる RCS
色相回転で 5 色パレットを生成 RCS
白でティント color-mix()
カスタム色のアルファを半分に RCS (oklch(from c l c h / calc(alpha * 0.5)))

2 つを組み合わせる

ネストできます:

.combo {
  background: color-mix(
    in oklch,
    oklch(from var(--brand) calc(l + 0.1) c h),
    white 30%
  );
}

これはまず --brand のより明るいバージョンを生成し、その結果に 30% の白を混ぜます。

ブラウザサポート

Relative Color Syntax は color-mix() より少し遅れて出荷されました。 Chrome 119+、Safari 16.4+、Firefox 128+ でサポートされています。 古いブラウザを対象にする場合はフォールバックや機能検出と組み合わせて ください。

ユースケース

チャネル単位のパレット派生、高度なテーマ生成 (色相回転で類似パレット)、アクセシブルなアルファ調整、新しい変数を作らずに「この色だけど少し違う」を CSS で表現したい場面。

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

フルツールを開く