ColorPicker

色相・彩度・明度・不透明度を、見本を確認しながら選びます。

ブランドの色
選択中の色sRGB

色の面は左右で彩度、上下で明度を調整します。矢印キーでも操作できます。各スライダーからも調整できます。

色の面で大まかに選び、スライダーで正確に調整できます。

透明度・広色域・無効状態
重ねる色
選択中の色Display P3

色の面は左右で彩度、上下で明度を調整します。矢印キーでも操作できます。各スライダーからも調整できます。

変更できない色
選択中の色sRGB

色の面は左右で彩度、上下で明度を調整します。矢印キーでも操作できます。各スライダーからも調整できます。

確認が必要な色
選択中の色sRGB

色の面は左右で彩度、上下で明度を調整します。矢印キーでも操作できます。各スライダーからも調整できます。

背景とのコントラストを確認してください。

Popover 内で色を選ぶ

使いどころ

  • 分類のラベルやマーカーなど、利用者が自由に色を決める時に使います。
  • 決まった数色から選ぶだけなら、色の名前を並べた Choice や Select を使います。

使い方

label と送信する名前の接頭辞 name、初めの色 value(colorSpace・hue・saturation・brightness・alpha)を渡します。1px #dedede の枠で囲んだ淡い灰色(#f9f9f9、角丸8px)の面に、彩度と明度を決める色の面(Backpackの配色の設定と同じく枠と角丸の無い四角で、今の位置は白い輪に暗い縁を付けた直径約12pxの輪)と選んでいる色の見本、色相・彩度・明度・不透明度の四本のスライダーを縦に並べます。スライダーは Range と同じ溝とつまみで、溝の中を各値の色の移り変わりにします。見本は1pxの灰色の枠を付けた26pxの四角(角丸2px)で、透明な部分は市松模様で示します。欄の幅が28rem以上ではスライダーを二列にし、38rem以上では色の面とスライダーを左右に並べます。色の面とスライダーは同じ値に合わせて動きます。

送信する値:name="brandColor" なら、brandColor[hue](0〜360)・brandColor[saturation](0〜100)・brandColor[brightness](0〜100)・brandColor[alpha](0〜1)と、brandColor[colorSpace](srgb か display-p3)を送ります。色空間は画面からは変えられず、value のまま送ります。

help と error は欄の下に出し、まとまりに関連付けます。error は表示するだけで、色の検証(背景とのコントラストなど)は利用側で行います。disabled は全ての操作を止め、形と面はそのままで文字だけを灰色にし、値を送りません。

値を変更すると、取り消せる color-picker:beforechange と、確定した後の color-picker:change を発火します。detailの color は color(srgb r g b / a)(広色域では color(display-p3 …))の形のCSSの色で、そのまま表示に使えます。

JavaScriptが無い時は色の面を隠し、四本の標準のスライダーで値を決めて送れます。見本は初めの色のまま動きません。

キーボード

ColorPickerのキーボード操作
キー動作
←・→(色の面)彩度を step ずつ下げ・上げます。右から左に読む時は逆です。
↑・↓(色の面)明度を step ずつ上げ・下げます。
Shift+矢印(色の面)step の10倍ずつ動かします。
矢印・Home・End・PageUp・PageDown(スライダー)ブラウザの標準のスライダーの動きで、その値を変えます。
Esc操作中の変更を取り消し、操作を始める前の色に戻します。

アクセシビリティ

  • まとまりは fieldset で、label を名前にします。色の面は「〜の彩度と明度」の名前を持ち、操作の仕方の説明を読み上げ用に関連付け、aria-controls で彩度と明度のスライダーを指します。
  • 色は見本の色だけに頼らず、四本のスライダーの名前と値でも伝えます。
  • error を渡すと、まとまりに aria-invalid を付け、誤りの文を aria-describedby に加えます。

イベント

ColorPickerが発火するイベント
イベント内容
color-picker:beforechange色を変える前に発火します。取り消せます。detailは { value, previousValue, color, reason, source } で、reason は pointer か keyboard、source は操作した箇所(area・hue・saturation・brightness・alpha)です。
color-picker:change色を変えた後に発火します。detailは color-picker:beforechange と同じです。

API

ColorPicker

標準rangeがフォーム値を保持し、上流のcolor-pickerが操作面と値を同期する。

ColorPickerのprops
名前型既定値説明
idstringルートのfieldsetのID。中の欄のIDの接頭辞にも使う。渡さなければ自動で生成する。
classstringルートのfieldsetに追加するクラス。
label必須string欄全体の名前。legendに出し、色の面の読み上げ名にも使う。
name必須string送信する名前の接頭辞。${name}[hue]・[saturation]・[brightness]・[alpha]・[colorSpace]で送信する。
valueColorPickerValuedefaultValue初期の色。
helpstring欄の下に出す補足。fieldsetのaria-describedbyに関連付ける。
errorstring欄の下に出すエラー文。fieldsetをaria-invalidにする。検証は利用側で行う。
disabledboolean色の面とスライダーをすべて使えなくする。値は送信しない。
formstring別の場所にあるformのID。送信する全ての欄に付ける。
stepnumber1色の面を矢印キーで動かす時の、彩度・明度の幅(0より大きく100以下)。Shiftを押すと10倍。
hueStepnumber使わない。互換のために型だけを残し、渡しても何も変わらない。上流のcolor-pickerでは色相環を矢印キーで動かす幅だが、このコンポーネントは色相環を持たず、色相のスライダーは他のスライダーと同じくブラウザの標準の動きで値を変える。

登録するcontroller:color-picker(ColorPickerController)

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/button.css、components/field.css、components/icon.css、components/range.css、components/tag.css、components/color-picker.css

ColorPickerValue

ColorPickerValue
名前型既定値説明
colorSpace必須"srgb" | "display-p3"色を解釈する色空間。画面からは変えられず、${name}[colorSpace]でそのまま送る。
hue必須number色相。0〜360度。範囲外の値は範囲内に収める。
saturation必須numberHSVの彩度。0〜100パーセント。範囲外の値は範囲内に収める。
brightness必須numberHSVの明度。0〜100パーセント。範囲外の値は範囲内に収める。
alpha必須number不透明度。0〜1。範囲外の値は範囲内に収める。

コード

HTML
Hono JSX