ブランド色のシェードスケールを生成

color-mix() で白と黒を使い、1 つのブランドトークンから完全な 50→950 シェードスケールを構築。Tailwind パレット生成器と同じ機能を純 CSS で実現。

Common patterns

詳細な説明

純 CSS による完全なシェードスケール

モダンなデザインシステムは色ごとに 50–950 のシェードスケールを出荷 します。color-mix() を使えば、プリプロセッサ無しで 1 つの真実の源 トークンからこのスケールを派生できます。

:root {
  --brand-500: #2563eb;
}

:root {
  --brand-50:  color-mix(in oklch, var(--brand-500), white 92%);
  --brand-100: color-mix(in oklch, var(--brand-500), white 84%);
  --brand-200: color-mix(in oklch, var(--brand-500), white 68%);
  --brand-300: color-mix(in oklch, var(--brand-500), white 48%);
  --brand-400: color-mix(in oklch, var(--brand-500), white 24%);
  --brand-600: color-mix(in oklch, var(--brand-500), black 18%);
  --brand-700: color-mix(in oklch, var(--brand-500), black 36%);
  --brand-800: color-mix(in oklch, var(--brand-500), black 54%);
  --brand-900: color-mix(in oklch, var(--brand-500), black 72%);
  --brand-950: color-mix(in oklch, var(--brand-500), black 86%);

カーブの調整

上記の比率は OKLCH で測ったとき知覚的に均一なカーブを生みます。 ブランドごとに調整可能で、非常に明るい色 (黄色系) は低い側で白を 減らし、非常に暗い色 (深い青系) は高い側で黒を減らすとよいです。

currentColor と組み合わせてコンポーネントをテーマ化

スケールが変数として存在すれば、コンポーネントは次のように書けます:

.button {
  background: var(--brand-500);
}
.button:hover {
  background: var(--brand-600);
}

…そして 1 つの --brand-500 の差し替えですべてが再テーマ化されます。 CSS 変数ジェネレーター と組み合わせ れば、トークンの残りを scaffolding できます。

ユースケース

1 つのトークンから派生する完全なブランドパレットを 10 行の CSS で定義。Tailwind config を再ビルドしたり Figma プラグインを動かしたりせずに、プロダクト/マーケがブランド色を変更可能になります。

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

フルツールを開く