JavaScript | HTML / CSS 連携:フォーム応用 - color入力

JavaScript JavaScript
スポンサーリンク

color入力は「カラーピッカーで“色そのもの”を選んでもらうための入力欄」

type="color" は、 ユーザーに「色」を選んでもらうための専用入力欄 です。

テキスト入力で #ff0000 みたいなカラーコードを打ってもらうのではなく、 ブラウザが用意してくれる「カラーピッカー」を使って、 直感的に色を選んでもらえます。

テーマカラーの設定 背景色の選択 文字色のカスタマイズ タグやラベルの色指定

みたいな「色をユーザーに決めてもらう UI」を作るときに、 type="color" がものすごく便利です。

color入力の基本形と「送られる値の形式」

いちばんシンプルな color入力

<input type="color" name="theme_color">

フォームに入れるとこうなります。

<form action="/settings" method="post">
  <p>テーマカラー:</p>
  <input type="color" name="theme_color">
  <button type="submit">保存</button>
</form>

ブラウザは小さな色の四角を表示し、 クリックするとカラーピッカーが開きます。

ユーザーが赤っぽい色を選ぶと、 送信される値は例えば theme_color = "#ff0000" のような 「16進数カラーコード(HEX)」になります。

重要なのは、 color入力は常に #rrggbb 形式の文字列を返す ということです。

#000000(黒) #ffffff(白) #007bff(青系)

など、CSSでおなじみの形式と同じなので、 そのままスタイルに使えます。

初期値(value)で「最初の色」を決める

デフォルトカラーを設定する

<input
  type="color"
  name="theme_color"
  value="#007bff"
>

この場合、 最初に表示される色は #007bff(青系)になります。

ユーザーが何も触らずに送信すると、 その色がそのまま送られます。

「おすすめの初期色」 「前回保存した色」

などを初期値として入れておくことで、 ユーザーはそこから微調整するだけで済みます。

color入力の value は「今その入力欄に入っている色」。 初期値としても、JavaScriptから変更する値としても使える。

よくある color入力の使い方をフォームでイメージする

テーマカラー設定フォーム

<form action="/settings" method="post">
  <p>サイトのテーマカラー:</p>
  <input
    type="color"
    name="theme_color"
    value="#007bff"
    required
  >
  <button type="submit">保存</button>
</form>

ここで color入力が担っている役割は、

ユーザーに「サイト全体のイメージカラー」を選んでもらう 選ばれた色を HEXコードとしてサーバーに送る

という 2 点です。

テキスト入力で #007bff と打ってもらうより、 カラーピッカーで選んでもらう方が圧倒的に楽で、 ミスもほぼ起きません。

JavaScript と color入力:選んだ色をその場で反映する

値を読む(ユーザーが選んだ色を取得)

HTML:

<input
  type="color"
  id="themeColor"
  name="theme_color"
  value="#007bff"
>
<button type="button" id="apply">適用</button>
<p id="result"></p>

JavaScript:

const input = document.querySelector("#themeColor");
const button = document.querySelector("#apply");
const result = document.querySelector("#result");

button.addEventListener("click", () => {
  const color = input.value; // 例: "#ff0000"
  result.textContent = `選択されたカラーコード:${color}`;
});
JavaScript

ここでのポイントは、

input.value に常に「現在選ばれている色の HEXコード」が入っている それはそのまま CSS の色指定に使える

ということです。

選んだ色を画面の背景に反映する

HTML:

<input
  type="color"
  id="bgColor"
  name="bg_color"
  value="#ffffff"
>
<button type="button" id="changeBg">背景色を変更</button>

<div id="box" style="width: 200px; height: 100px; border: 1px solid #ccc;">
  背景色が変わります
</div>

JavaScript:

const bgInput = document.querySelector("#bgColor");
const changeBgButton = document.querySelector("#changeBg");
const box = document.querySelector("#box");

changeBgButton.addEventListener("click", () => {
  const color = bgInput.value;
  box.style.backgroundColor = color;
});
JavaScript

ユーザーが色を選んで「背景色を変更」ボタンを押すと、 その色が box の背景色として反映されます。

color入力は「ユーザーに色を選んでもらう窓口」、 JavaScript は「その色をどこにどう適用するか」を決めるロジック。 この組み合わせで、インタラクティブなカラーカスタマイズUIが作れる。

color入力の値をCSSと“直結”させる感覚を掴む

CSSの色指定とまったく同じ形式

CSSでよく書く色指定はこうですよね。

.box {
  background-color: #ff0000;
  color: #ffffff;
}

color入力の value も、 まったく同じ #rrggbb 形式です。

つまり、

color入力で選んだ色 → そのまま CSS に突っ込める

ということです。

JavaScriptでやるなら、

const color = input.value; // "#ff0000"
element.style.backgroundColor = color;
JavaScript

このように、 「color入力 → JS → CSS」という流れが非常に自然につながります。

初心者としては、 “color入力の値はそのまま CSS の色指定に使える” という感覚をしっかり掴んでおくと、応用が一気に楽になります。

HTML側のバリデーションと color入力

required で「必ず色を選んでほしい」欄にする

<input
  type="color"
  name="theme_color"
  required
>

空のまま送信しようとすると、 ブラウザが「このフィールドを入力してください」と止めてくれます。

ただし、color入力は常に何かしらの色を持っていることが多いので、 required は「必須項目ですよ」という意味づけ程度に考えておけばOKです。

color入力のUIはブラウザ依存だが“意味”は同じ

カラーピッカーの見た目は違っても、返ってくる値は同じ

Chrome Safari Firefox Edge

それぞれで color入力のカラーピッカーの見た目は違います。

丸い色相環だったり、 四角いグラデーションだったり、 スライダーだったり。

でも、 ユーザーが選んだ結果として返ってくるのは、 どのブラウザでも #rrggbb 形式の文字列です。

UIはブラウザに任せる。 自分は「色の値(HEXコード)をどう使うか」に集中する。 これが color入力との正しい付き合い方です。

color入力を使うか迷ったときの判断基準

「ここは“ユーザーに色を決めてもらう”場面か?」

自分にこう聞いてみてください。

ここでユーザーにしてもらいたいのは、

色を自由に選ぶことか? それとも、決められた色の中から選ぶことか?

自由に選んでほしい → type="color" 決められた候補から選んでほしい → selectradio で色名を選ばせる

例えば、

テーマカラーを完全に自由に決めてもらう → color入力 「青・赤・緑の中から選んでください」 → radioやselect

という使い分けになります。

初心者として「color入力」で絶対に掴んでほしいこと

type="color" は、 「ブラウザのカラーピッカーを使って、ユーザーに色を選んでもらい、その色を HEXコードとして受け取るための入力欄」 です。

送られる値は常に #rrggbb 形式の文字列 value で初期色を決められる JavaScriptでは input.value をそのまま CSS の色指定に使える カラーピッカーの見た目はブラウザ依存だが、意味は同じ 「自由に色を選んでほしい」場面で使うのが自然

あなたが color入力を書くときに、 「これは“ユーザーに色を選んでもらう窓口”で、 選ばれた色はそのまま CSS に流し込めるデータなんだよな」 とイメージできていたら、 もう color入力を“ただのカラーピッカー”ではなく、 “ユーザーの感覚とあなたのアプリの見た目を直結させるインターフェース”として扱えている状態です。

タイトルとURLをコピーしました