CSS color-mix() ジェネレーター
モダンCSSの color-mix() 関数で2色を混ぜます。補間色空間(oklch / srgb / lab / hsl 等)を選び、比率スライダーを動かして、本番投入できるスニペットをコピーできます。
このツールについて
モダンCSSにおける color-mix() 関数は、これまで Sass のヘルパーや
opacity のハック、HEX計算で書かれてきたコードをひとつに置き換えます。
このジェネレーターは色を2つ選び、補間色空間を指定し、比率を動かして、
スタイルシート・デザイントークン・Tailwind の任意値などにそのまま貼れる
スニペットを生成するためのビジュアルエディタです。
最大の特徴は 任意の色空間で補間できる ことです。赤と青を srgb
で混ぜると、見慣れた濁った紫が得られます。同じ2色を oklch で混ぜる
と、知覚的に均一なパスを通って鮮やかな紫になります。これは OKLCH が
明度・彩度・色相を独立に扱うためです。プレビュー下の比較パネルでは、
6つの色空間で補間した同じ2色を並べて表示するので、なぜ「in oklch」が
モダンなデザインシステムの推奨設定になっているのかを視覚的に確認できます。
既存の HEX/RGB パレットを OKLCH に変換したい場合は、
カラーコンバーター が便利です。
color-mix() はモダンな CSS カラー機能と組み合わせると真価を発揮します。
currentColor と組み合わせれば、1つのブランド変数からサーフェス色や
ボーダー色を派生させられます。CSS カスタムプロパティと組み合わせれば、
ダークモード用のシェードスケールが構築できます。さらに Relative Color
Syntax (oklch(from var(--brand) calc(l + 0.1) c h)) と組み合わせれば、
チャネル単位の演算も可能です。完成したパレットは
アクセシビリティ カラーチェッカー
で WCAG AA/AAA のコントラストを確認し、複数色のグラデーションが
必要なときは グラデーションジェネレーター
を使ってください。
すべての処理はブラウザ内で完結します。混合結果はブラウザ自身のスタイル
エンジンに getComputedStyle 経由で解決させているため、ユーザーが
実際に見るのと同じ色をそのままプレビューします。サーバー通信、貼り付けた
色のテレメトリ、外部のカラーライブラリは一切ありません。ブラウザサポートは
Chrome/Edge 111、Safari 16.2、Firefox 113 以降で、グローバルの 95% 以上を
カバーします。未対応ブラウザで開いた場合は警告を表示します。
使い方
- Color 1 と Color 2 をカラーピッカー、または HEX 値(
#rrggbbまたは#rgb)の入力で指定し、Enter で確定します。 - Interpolation color space ドロップダウンで補間色空間を選択します。モダンな既定は
oklchです。レガシーな見た目にはsrgbを選んでください。 - Mix ratio スライダーで2色の混合比 (0%-100%) を調整します。
- Live preview スウォッチが即座に更新されます。下に解決済みの sRGB HEX 値も表示されます。
- Same mix across color spaces セクションで、srgb / srgb-linear / hsl / oklch / oklab / lab の結果を並べて比較できます。
- Swap で2色を入れ替え(比率も自動反転)、Reset で初期値(赤/青)に戻せます。
- Copy CSS または Ctrl+Shift+C で生成された
color-mix(...)式をクリップボードにコピーできます。
color-mix() の人気サンプル
よくある質問
CSS color-mix() とは何ですか?
color-mix() は CSS Color Module Level 5 で定義された、指定の色空間で2色を補間する関数です。構文は color-mix(in <colorspace>, <color1> <percent>, <color2> <percent>) です。ティント(明色化)、シェード(暗色化)、ホバー、テーマ派生色などをベース色から導出する際に、Sass のミックスインやカスタムプロパティの計算、ランタイム JavaScript を不要にします。
色の混合に sRGB ではなく OKLCH を使うべき理由は?
sRGB での混合は数学的には単純ですが知覚的には正しくありません。彩度の高い2色の中点では彩度が落ち、濁った灰色がかった色になります。OKLCH(および OKLab)は人間の視覚研究から導かれた知覚的に均一な色空間です。赤と青を oklch で混ぜると、明度と彩度を保ったまま中間色を通り、鮮やかな紫が得られます。Tailwind v4、Radix Themes、Material You など主要なデザインシステムが OKLCH ベースのパレットに移行している理由はここにあります。
color-mix() のブラウザサポートはどうですか?
color-mix() は Chrome 111+、Edge 111+、Safari 16.2+、Firefox 113+ と、それぞれの同世代モバイルブラウザでサポートされています。2025 年時点でグローバルトラフィックの約 95% 以上をカバーします。古いブラウザ向けには静的な fallback 色を先に書き、モダンブラウザに上書きさせる方式が安全です:'background: #7f007f; background: color-mix(in oklch, red, blue);'
「longer hue」と「shorter hue」の違いは?
極座標系の色空間(hsl, hwb, lch, oklch)で補間する場合、色相環を回る方向に2通り(短弧と長弧)があります。デフォルトは「shorter hue」です。「longer hue」を指定すると長い方を回るため、虹色のような遷移が得られます。例:color-mix(in hsl longer hue, red 50%, blue 50%) は、マゼンタを通る代わりに黄色・緑・シアンを経由します。
Lab と OKLCH はどちらを選ぶべきですか?
両方とも知覚的色空間ですが、OKLCH/OKLab は 2020 年に Björn Ottosson が、古い CIE Lab/LCH が青や紫付近で示していた問題を修正するために設計したものです。2025 年の UI 開発・デザイントークンには OKLCH を推奨します。CIE Lab を使う既存の印刷・画像処理パイプラインと相互運用する必要がある場合のみ Lab を選んでください。差が最も顕著なのは青色周辺で、lab での混合は予想外に紫を経由することがある一方、oklch は期待される色相系列に留まります。
color-mix() はアルファや currentColor も扱えますか?
はい。各入力色は独自のアルファを持ち、結果のアルファも色チャネルと一緒に補間されます。currentColor を入力に渡すこともでき、たとえば color-mix(in oklch, currentColor 80%, transparent) は要素の継承色のフェード版を生成します。これは子要素にも影響してしまう opacity ハックの、モダンかつアクセシブルな代替手段です。
データは安全ですか?
はい。本ツールはクライアントサイドのみで動作する単一の React コンポーネントです。入力した色値はコンポーネントの state に保持され、CSS 式は単純な JavaScript の文字列テンプレートで構築されます。プレビューはブラウザ自身のスタイルエンジンに getComputedStyle 経由で解決させています。ネットワーク通信、入力色のアナリティクス、外部カラーライブラリは一切ありません。DevTools の Network タブを開きながら触ることで確認できます。
関連ツール
カラーコンバーター
HEX、RGB、HSL間でカラーを変換し、コントラストチェックやパレット生成も行えます。
アクセシビリティカラーチェッカー
WCAG 2.1のカラーコントラスト比をAAおよびAAA基準でチェックします。前景色と背景色のペアをライブプレビューで確認。
CSSグラデーション生成
リニア、ラジアル、コニックCSSグラデーションをカラーストップと角度制御で視覚的に作成します。
CSS変数ジェネレーター
CSSカスタムプロパティでカラーテーマシステムを設計します。シェードスケール、セマンティックトークン、ダークモード対応を自動生成。
Tailwind CSS変換
プレーンCSSをTailwind CSSユーティリティクラスに変換します。
View Transitions API ジェネレーター
View Transitions API の CSS を生成。cross-fade / slide / scale / カスタム keyframes と document.startViewTransition() の実機プレビュー。
CSS アンカーポジショニング ジェネレーター
CSS Anchor Positioning(anchor-name / position-anchor / anchor() / position-area / position-try-fallbacks)をビジュアルに生成。ライブプレビューとコピペ可能なCSS出力。