Simonwep/pickr でカラーピッカー(Color picker)
はじめに
Simonwep/pickr でカラーピッカー(Color Picker)を作成する方法
TL;DR
- Simonwep/pickr について簡単に整理した
- テーマが3つ用意されており、細かいカスタマイズも簡単にできる
- イベントが一通り揃っておりユーザー操作に合わせて独自処理を行うなども簡単に対応できる
目次
環境・条件
1 | $ sw_vers |
詳細
セットアップ
npm i や yarn add でインストール。
1 | $ npm i @simonwep/pickr |
CDN も利用可能。classic, monolith, nano から好きなテーマを1つ、JS を Modern or ES5 のどちらか1つを読み込む。(わかりやすさのためにコメントアウトしている)
1 | <!-- テーマ --> |
使い方
基本
参考: Usage
カラーピッカーを表示するための要素を作成して、Picker.create でマウント。
1 | <div id="pickr"></div> |
1 | const picker = Picker.create({ |

詳細設定
参考: Options
上記セクションに詳細設定に関するオプションが書かれている。個人的に使いそうなものを抜粋。
el: カラーピッカーのマウント先theme: テーマ(classicormonolithornano)sliders: 透明度(opacity)/彩度(hue) のスライダーの方向comparison: 変更前後の色の比較(falseにすると色を変えると即反映)default: 色の初期値swatches: 色見本セット (ユーザーがお手軽に色変更できるように準備するイメージ)defaultRepresentation: テキスト入力を受け付ける場合の表示方法デフォルトcomponents: 表示要素の選択i18n: ボタンなどのテキストの変更
theme について
参考: Themes
classic, monolith, nano が使用可能。それぞれの見た目の違いは公式画像が分かりやすい。
nano は CSS の grid を使っているため、一部ブラウザでは動かないとのことなので注意。
当たり前だが、対応する CSS ファイルを読み込んでおく必要がある。(全部読み込んでいる場合は特に気にしなくて良い)
components について
1 | components: { |
i18n について
UI 部分
'ui:dialog': ‘color picker dialog’,'btn:toggle': ‘toggle color picker dialog’,'btn:swatch': ‘color swatch’,'btn:last-color': ‘use previous color’,'btn:save': ‘Save’,'btn:cancel': ‘Cancel’,'btn:clear': ‘Clear’,
aria-labels
参考:
'aria:btn:save': ‘save and close’,'aria:btn:cancel': ‘cancel and close’,'aria:btn:clear': ‘clear and close’,'aria:input': ‘color input field’,'aria:palette': ‘color selection area’,'aria:hue': ‘hue selection slider’,'aria:opacity': ‘selection slider’
イベント
参考: Events
| イベント | 概要 | 引数 |
|---|---|---|
init |
初期化完了時 | PickrInstance |
hide |
カラーピッカーが閉じられた時 | PickrInstance |
show |
カラーピッカーが表示された時 | PickrInstance |
save |
色の保存時。 クリアボタン経由での発火時は色(第一引数) が null |
HSVaColorObject or null, PickrInstance |
clear |
クリアボタン クリック時 | PickrInstance |
change |
色の変更時。保存していなくても発火する。 | HSVaColorObject, PickrInstance |
changestop |
色の変更完了時 | PickrInstance |
cancel |
キャンセルボタン クリック時 | PickrInstance |
swatchselect |
色見本の選択時 | HSVaColorObject, PickrInstance |
Pickr.create で生成したインスタンスに対して、 .on でハンドラを設定する。
1 | const pickr = Picker.create({/* ... */}); |
HSVaColorObject について
save, change, swatcheselect のイベントハンドラに渡される HSVaColorObject について。
toRGBA などのメソッドを利用可能、Red/Green/Blue/Alpha の各値が Array(配列) で返却される。
toString() で CSS でそのまま利用可能な文字列として取得できる、toString(3) とすると有効桁数を変更可能。
1 | // ********** HSVA ********** |
その他のメソッドやプロパティなど
参考:
JS 側からカラーピッカーを表示したり閉じたり、デフォルトオプションを設定したりもできる。詳しくは上記を参照。
まとめ
- Simonwep/pickr について簡単に整理した
- テーマが3つ用意されており、細かいカスタマイズも簡単にできる
- イベントが一通り揃っておりユーザー操作に合わせて独自処理を行うなども簡単に対応できる
参考文献
関連記事
- Vue.js を使ってメインページ側で動作する Chrome 拡張機能を開発する方法
- webpack & Babel を使って Chrome 拡張機能を開発するためのテンプレート(Hot Reload 付き)
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)
- Chart.js(vue-chartjs) でツールチップの表示内容を変更
- Vue.js で日本語変換での誤発火を抑止しつつ Enter キーで Submit
- ツールチップを簡単に表示できる Tippy.js の使い方
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア
