MDUIDocs
llms.txt のリンクをコピーllms-full.txt のリンクをコピーMarkdown 形式でこのページを表示このページの内容について ChatGPT と相談するプロジェクトの完全なドキュメントについて ChatGPT と相談する
プリセットカラー
カスタムカラー
壁紙から色を抽出
壁紙を選択してください
開発ガイド
AI 補助開発
スタイル
ダークモード ダイナミックカラー 文章のタイポグラフィ デザイントークン
フレームワークとの統合
コンポーネント
関数
独立パッケージ

ダイナミックカラー

mdui はダイナミックカラー機能を提供しています。色の値を 1 つ指定するだけで、mdui は自動的に一連のカラースキームを生成します。また、mdui は指定された壁紙から主色を抽出し、それに基づいてカラースキームを生成することもサポートしています。

ドキュメントページの右上にある アイコンをクリックしていつでもカラースキームを切り替え、各コンポーネントが異なるカラースキームでどのように表示されるかを確認できます。

カラースキームは実際には一連の CSS カスタムプロパティです。mdui コンポーネント内の色の値はすべてこの一連の CSS カスタムプロパティを参照しているため、すべてのコンポーネントのカラースキームを一度に更新できます。完全な CSS カスタムプロパティのリストは デザイントークン - 色 を参照してください。

カラースキームの生成

setColorScheme 関数を使用してカラースキームを生成できます。この関数は 16 進数のカラーコードをパラメーターとして受け取り、一連のカラースキームを生成し、ページの <html> 要素にそのカラースキームを設定します。例えば:

import { setColorScheme } from 'mdui/functions/setColorScheme.js';

// #0061a4 からカラースキームを生成し、<html> にそのカラースキームを設定
setColorScheme('#0061a4');

2 番目のパラメーターで target プロパティを指定すると、どの要素にカラースキームを設定するかを指定できます。例えば:

import { setColorScheme } from 'mdui/functions/setColorScheme.js';

// #0061a4 からカラースキームを生成し、.foo 要素にそのカラースキームを設定
setColorScheme('#0061a4', {
  target: document.querySelector('.foo'),
});

デフォルトで生成されるカラースキームには、デザイントークン - 色 に記載されている色のみが含まれます。2 番目のパラメーターで customColors プロパティを指定すると、指定されたカスタムカラー名とカラー値に基づいて、mdui は一連のカスタムカラーグループを生成します。例えば:

import { setColorScheme } from 'mdui/functions/setColorScheme.js';

// #0061a4 からカラースキームを生成し、既存の error カラーグループの値を変更し、新しい music カラーグループを追加
setColorScheme('#0061a4', {
  customColors: [
    {
      name: 'error',
      value: '#69F0AE',
    },
    {
      name: 'music',
      value: '#FFC107',
    },
  ],
});

カスタムカラーグループには、以下の 4 つの CSS カスタムプロパティが含まれます:

  • --mdui-color-{name}
  • --mdui-color-on-{name}
  • --mdui-color-{name}-container
  • --mdui-color-on-{name}-container

ここでの {name} は、customColors で指定した name フィールドの値、つまりカスタムカラー名です。

カスタムカラー名は、デフォルトのカラースキームに既に存在する色名(primarysecondarytertiaryerror など)でも構いません。これらの値をカスタムカラー名として指定すると、生成されるカラースキーム内の対応する 4 つの CSS カスタムプロパティは、指定されたカラー値で生成されます。例えば、上記の例では error というカスタムカラー名を指定しています。error はデフォルトのカラースキームに既に存在する色名であり、対応する CSS カスタムプロパティは mdui コンポーネントでエラー状態を表すために使用されています。ここでカラー値が緑色の値に設定されているため、mdui コンポーネントのエラー状態も緑色になります。

カスタムカラー名は新規追加も可能です。例えば、上記の例の music はデフォルトのカラースキームには存在しないため、生成されるカラースキームには追加で 4 つの CSS カスタムプロパティが含まれます。これらの CSS カスタムプロパティは、独自のスタイルで参照できます:

<style>
  .music {
    background-color: rgb(var(--mdui-color-music));
    color: rgb(var(--mdui-color-on-music));
  }

  .music-container {
    background-color: rgb(var(--mdui-color-music-container));
    color: rgb(var(--mdui-color-on-music-container));
  }
</style>

<div class="music">Music</div>
<div class="music-container">Music Container</div>

また、removeColorScheme 関数を使用して、上記の方法で生成されたカラースキームを削除できます。パラメーターを指定して削除する要素を指定できます。デフォルトでは、<html> 上のカラースキームを削除します。

壁紙からの色の抽出

mdui は getColorFromImage 関数を提供しており、指定された Image インスタンスから主色を抽出します。この関数は Promise を返し、解決された値が抽出された 16 進数のカラーコードです。

この関数で得られたカラーコードを使用し、上記のドキュメントで紹介した setColorScheme 関数を呼び出してカラースキームを設定できます。例えば:

import { getColorFromImage } from 'mdui/functions/getColorFromImage.js';
import { setColorScheme } from 'mdui/functions/setColorScheme.js';

const image = new Image();
image.src = 'image1.png';

getColorFromImage(image).then((color) => setColorScheme(color));
このページの目次