IT系おじさんのチラシの裏
2018年10月~
当サイトの記事にはアフィリエイト広告のリンクが含まれる場合があります

HTMLフォーム要素のカラーピッカーでカラーパレットを出す方法

最近ひさしぶりにHTMLのフォーム要素でカラーピッカーを実装したのですが、その際にUIが変わっていて一瞬パニックになりました。

結果的に従来のカラーパレットを出すことが出来てホッと一息ついたのですが、ぼくと同じようにパニックになる方がいるかも知れないので記録として残しておきます。

カラーピッカーとは

実行例

クリックするとカラーピッカーが表示されます。

HTMLコード

<form>
	<input type="color">
</form>

実にシンプル。たった1行でブラウザ上にカラーピッカーを実装できるスグレモノです。

何が問題なのか

バージョンによってまたUIが変わるかもなので、2020年11月時点でのスクリーンショットを貼り付けておきます。

Chromeのカラーピッカー

エンジニアやデザイナー的にはこれの何が悪いのかって感じでしょうけれど、一般ユーザーがこれを見たらパニくる可能性があります。色の選択肢が多すぎる!と。

なぜ多いと問題なのか。

うちの会社はCMSを開発してサポート込みで月額サービスとして提供していたりするわけですが、そのサービスを使うのはPCにもデザインにも詳しくない素人さんです。タグなんて当然わからないし覚える気もない。

文字を赤くしたいなら、<span style="color:#ff0000;">赤字</span>と書いてくださいね~、なんて言えるわけがない。

<span style="color:red;">赤字</span>と教えればわかりやすいだろうって? いえいえ、素人さんにとっては記号が入った時点でアウトです。

高い金払ってシステム使ってるのになんで難しいことさせられないといけないのか、と考えるお客様もいるでしょうし、いろいろ譲歩してくれるお客様でも慣れない作業でダブルクォートを入れ忘れてページを壊してしまうなんてこともありえます。

それに使うのが技術者であっても、このカラーピッカーから特定の同じ色を毎回選ぶのは面倒です。もちろん数字で入れりゃ良いんですけど、それを毎回覚えておくのかって話。色のパターン化、つまりカラーパレットは大事です。

例えば、トップページに表示するキャンペーン情報。ここの文字色がちょっと明るい赤だったり、暗すぎたり、毎回違う、あるいは毎行ごとに違ったらとんでもなく見づらくダサいページになってしまいます。

こういうのはデザイナー的にはCSSのクラス名で管理しますし、なんならWordの見出し設定のように「見出し1」「見出し2」というプルダウンを用意してあげたほうがお客様にとって使い勝手が良いかも知れません。

しかし、恥ずかしながら、てっとり早く実装を行うため、うちではブラウザのカラーピッカー機能に任せている箇所が一部あるのです。元から表示されるカラーパレットが使いやすかったですし。

そして今回、いつのまにかUIが変わっていてパニくったというお話。

インターネットは便利ですね。ちょっとググったらlist属性なるものを発見しました。

カラーパレットを出すにはlist属性を追加するだけでOK

厳密にはカラーパレットというか、単なる色のリスト化ですが、やりたいことはまさにコレです。

実行例

HTMLコード

<form>
	<input type="color" list>
</form>

あらびっくり。

たったこれだけでカラーパレット式に変わりました。むしろ前より使いやすくなったかも。

指定したカラーだけ表示することも可能

実行例

HTMLコード

<form>
	<input type="color" list="color-list">
	<datalist id="color-list">
		<option value="#000000"></option>
		<option value="#ff0000"></option>
		<option value="#008000"></option>
		<option value="#0000ff"></option>
		<option value="#ffff00"></option>
	</datalist>
</form>

おぉすげぇ…。

「その他」を選ばれるとフルカラーで指定できるようになるため、selectタグのようにUIだけで選択肢を限定するような使い方はできません。

しかしそこはJavaScriptなり、飛び先のサーバーサイドスクリプトでチェックすれば良い話です。

まとめ

  • ブラウザ上で色を選択させるには<input type="color">だけで簡単に実装できる
  • しかしブラウザごとにUIが違う上、いつのまにかChromeではカラーパレットが表示されなくなっていた
  • <input type="color" list>のようにlist属性を追加することでカラーパレットから選ぶようにも出来た
  • datalistタグを使えば、選べる色も自由に設定可能だった

list属性はHTML5で規定されているようですし、ずっと前からあったんでしょうねー。ぼくが知らなかっただけでw

ともあれ、いつのまにかカラーピッカーのUIが変わっていて驚きましたが、無事解決できてよかったよ~…。

関連記事

簡単なJavaScriptとCSSで横並びプルダウンを自作する

Web上の入力フォームにおいて、よく使われるプルダウンのお話です。 つい先日も、「PHPで日付の表記ゆれを修正する例」で選択肢が多い場合のプルダウン※の使いづらさについて少し触れました。 ※V

CSSのanimationで画像の上に複数のテロップを流す方法

以前、「CSSだけで数珠つなぎに無限ループするニュースティッカーを作ってみる」と題して、右から左にテキストが流れるニュースティッカーを作りましたが、ちょっとこれをテロップのように画像の上に重ねてみたい

CSSとJavaScriptで横スクロールするお知らせ画面を作成する

前回の「CSSで円形の上下左右矢印アイコンを描く例」の続きみたいなものですが、せっかく左右の矢印アイコンを作ったので、それを活用して、矢印をクリックしたら横スクロールするお知らせ画面を作ってみたいと思

CSSで円形の上下左右矢印アイコンを描く例

以前、「CSSで左右/上下の両矢印を描画し、幅も自動調整する」という記事ではCSSを使い、幅やサイズの解説などに便利な両端に矢印が付いた線の描画をしましたが、今回はそういう矢印ではなく、クリックしたく

コメント

新しいコメントを投稿する

[新規投稿]
 
TOP