テーマ化可能なコンポーネント用に currentColor と混合

color-mix() を魔法の currentColor キーワードと組み合わせて、継承色に応じて自動的にティント、フェード、暗化するコンポーネントを構築。

Advanced

詳細な説明

ティントを継承するコンポーネント

currentColor は要素の color プロパティの値に解決される CSS キーワードです。color-mix() と組み合わせると、配置先のあらゆる 色コンテキストに適応するコンポーネントを構築できます:

.icon-button {
  color: var(--brand);
  background: color-mix(in oklch, currentColor 8%, transparent);
  border: 1px solid color-mix(in oklch, currentColor 32%, transparent);
}

.icon-button:hover {
  background: color-mix(in oklch, currentColor 16%, transparent);
}

親が .icon-buttoncolor を赤、青、var(--brand-success) に切り替えると、背景/ボーダーティントは自動的に追従します。テーマ バリアントも追加修飾子も不要です。

rgba(currentColor, 0.08) より優れている理由

currentColorrgba() の中で直接使えません。これはチャネルを 分解できる色リテラルではなくキーワードだからです。 color-mix(in oklch, currentColor 8%, transparent) がモダンで 動作する代替手段で、OKLCH の知覚的メリットを保てます。

「ゴーストボタン」セットの構築

カスタムプロパティと組み合わせて、より読みやすく書けます:

.button { --weight: 8%; background: color-mix(in oklch, currentColor var(--weight), transparent); }
.button:hover  { --weight: 16%; }
.button:active { --weight: 24%; }

これで全インタラクション状態が 1 つのカスタムプロパティに集約されます。

ユースケース

親の color を継承して自己ティントすべき再利用コンポーネントライブラリ (ボタン、チップ、コールアウト)。多数のバリアントクラスを露出せずに済みます。ヘッドレス UI やデザインシステムプリミティブで一般的。

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

フルツールを開く