ほしかったもの
欲しかったのはこんな感じ
- HEX (
#FFFFFF
) やRGBA (rgb(0,0,255)
)でテキスト入力指定もできる - カラーピッカーから選択入力もできる
- シンプルに使える
個人的にはColorPicker.Proが一番理想的だったんだけど、利用できなくなってて断念。。
そこで見つけたのが、jscolorというライブラリ
使ってみる
- 公式サイトからダウンロード & 中に入ってる
jscolor.min.js
を読み込み
(CDNでも利用可能) data-jscolor
を記載したinputタグを設置
これだけ
<!-- ファイルをダウンロードした場合 -->
<script src="/path/to/js/jscolor.min.js"></script>
<!-- CDNの場合 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.4.5/jscolor.min.js" integrity="sha512-YxdM5kmpjM5ap4Q437qwxlKzBgJApGNw+zmchVHSNs3LgSoLhQIIUNNrR5SmKIpoQ18mp4y+aDAo9m/zBQ408g==" crossorigin="anonymous"></script>
<input value="#3399FF" data-jscolor="{}">
inputのvalue
には下記のような種類の値が指定できる
- HEX : (例)
#3399FF
- AlphaつきHEX: (例)
#3399FF80
- RGBA: (例)
rgba(51,153,255,0.5)
種類をオプションなどで指定する必要はなく、value
に指定した値を見分けて柔軟にカラーピッカーを表示してくれるし、
なんとAlpha (透過性)も指定できるという優れもの
使ってみる
- HEX指定の場合
- AlphaつきHEX指定の場合
- RGBA指定の場合
また、data-jscolor="{alpha:0.7}"
のようにAlphaを別途指定することも可能
イベントの利用
例えばinputの色が変更された時、同じページ内の別要素の色も同期して変更したい場合onChange
メソッドを使うことでイベント設定ができる
<script src="/path/to/js/jscolor.min.js"></script>
<input
onChange="update(this.jscolor, '#targetOnChange')"
value="#3399FF"
data-jscolor="{}"
/>
<div id="targetOnChange">ここの色も変わるよ</em>
<script>
function update(picker, selector) {
document.querySelector(selector).style.background = picker.toBackground()
}
</script>
- DEMO
ここの色も変わるよ
その他、input入力をなくしてボタン表示にしたり、
カラーピッカーをカスタマイズしたり諸々オプション指定が可能
詳しくはこちら
HEXでもRGBAでも色指定できて尚且つピッカーでも選択できる
カラー選択ライブラリを探してて、良さげなのを見つけたのでメモ