このページの中身

選択

選ばせる部品は、選択肢の数と、選んだ瞬間に何が起きるかで決まります。見た目の好みでは決めません。

選択肢の数と性質から、使う部品を決める分岐図
図を大きく見る
図の中身を文字で読む
  • 選択肢の数と性質で部品が決まる 見た目のために独自実装しない
  • 複数選べる? チェックボックス 標準の select はブラウザとOSが描画を担当する。
  • はい 絞り込み・同意・興味の選択 モバイルでは画面下から専用のピッカーが出る。
  • 独自実装すると、キーボード操作・読み上げ・
  • この専用ピッカーをすべて自前で再現することになる。
  • 押した瞬間に反映? トグルスイッチ
  • はい 設定画面。保存ボタンなし ラジオボタンのキーボード挙動も標準にしかない
  • グループ全体で1つのタブ位置。矢印キーで移動。
  • この挙動は自作では再現しにくい。
  • 選択肢は5つ以下? ラジオボタン
  • はい 比較させたい。全部見せる 初期値を入れてよいか
  • セレクトは先頭に「選択してください」を置く。
  • いいえ → セレクト 選んだのか初期値なのか区別できなくなるため。
  • 20を超える? コンボボックス
  • 打って絞り込む。駅名・市区町村 同意のチェックを初期状態でオンにするのは、
  • 多くの地域で法的にも問題になる。

ひと目で#

チェックボックス
複数選べる。単独の同意にも使う
ラジオボタン
1つだけ。選択肢がすべて見えている
セレクト
1つだけ。畳まれている
トグルスイッチ
オンとオフ。押した瞬間に反映される
コンボボックス
打って絞り込む。選択肢が多いとき
スライダー
おおよその値。数値の併記がほぼ必須

使い分け#

状況使う部品
複数選べるチェックボックス
押した瞬間に設定が変わるトグルスイッチ
選択肢が2〜5つで、見比べさせたいラジオボタン
選択肢が6つ以上で、順序になじみがあるセレクト。都道府県、年月
選択肢が20を超えるコンボボックス
おおよその値でよい(価格帯、音量)スライダーに数値を添える
近い日付で、曜日が判断材料になるデートピッカー
生年月日直接入力。ピッカーは遠い日付に向かない

間違えやすいところ#

トグルスイッチは押した瞬間に反映され、チェックボックスは送信で確定することを時間の流れで比べた図
図を大きく見る
図の中身を文字で読む
  • いつ反映されるかで選ぶ
  • トグルスイッチ
  • 押した瞬間に、もう保存されている
  • だから送信ボタンを置かない。取り消しは元へ戻す操作で受ける
  • チェックボックス
  • この時点では、まだ何も起きていない 送信する ここで確定する
  • 選択肢が2つでも、確定に送信が要るならチェックボックス。見た目の新しさで選ばない。
  • ✕ フォームの中にトグルを置く → 押した時点で設定が変わったと誤解され、送信せずに離脱される

直す例#

架空の案件を1つ例にとります。どこを見て、何をどう直すかを書きます。

貸し会議室の予約フォームです。「ご利用時間帯」は午前・午後・終日の3択なのにセレクトで畳まれていて、開くまで選択肢が見えません。その下の「キャンセル待ちを希望する」はトグルスイッチです。押すと即座に登録されたように見えますが、実際は送信ボタンを押すまで何も起きていません。

時間帯はラジオボタンに開いて、3つを見比べながら選べるようにします。キャンセル待ちはチェックボックスに替えます。トグルは「押した瞬間に反映される」を約束する部品なので、送信で確定するフォームの中に置くと、その約束が嘘になります。

確認する#

使えるパターン#

このページで扱う語#

このページで扱う語を並べる本文では太字2 語

語の名前から引くなら用語索引へ。

ドロップダウン
操作すると下方向に開き、選択肢や項目を表示する仕組みの総称。
デートピッカー
カレンダーを表示して日付を選ばせる部品。

この話が要る場面#

このページが答えになる、現場の困り事です。困り事の側から探すと、同じ場所に着きます。

選択肢をどの部品で出すか迷う

2〜5個で全部見せたいならラジオ、6個以上ならセレクト、複数選べるならチェックボックス。

このコードで動いている見本です

トグルとチェックボックスのどちらか

その場で即座に反映されるならトグル、保存を押して確定するならチェックボックス。

このコードで動いている見本です

この場面のほかの困り事と、そのまま貼れる部品は部品を選ぶにまとめてある。逆引きには全188件。

部品を決める#

選択肢の数と、複数選べるかどうか。この2つを動かすと適合する部品が実物で切り替わり、判断の根拠と fieldset 込みの完成 HTML が付いてきます。

ラジオボタン 1つだけで5つまでなら、選択肢を全部見せて見比べられるラジオボタンにします。

ご興味のあるテーマ
<!-- 1つだけ・4択 → ラジオボタン -->
<fieldset class="choices">
  <legend>ご興味のあるテーマ</legend>
  <label><input type="radio" name="theme" value="color"> 配色</label>
  <label><input type="radio" name="theme" value="type"> 文字</label>
  <label><input type="radio" name="theme" value="spacing"> 余白</label>
  <label><input type="radio" name="theme" value="layout"> レイアウト</label>
</fieldset>

<style>
.choices { display: grid; gap: var(--space-1); border: 0; margin: 0; padding: 0; }
.choices legend { font-weight: 700; padding: 0; margin-block-end: var(--space-2); }
.choices label { display: flex; gap: var(--space-2); align-items: center; min-block-size: 2.75rem; }
.choices-select { display: grid; gap: var(--space-2); justify-items: start; font-weight: 700; }
.choices-select select { font: inherit; font-weight: 400; padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border); }
</style>

この道具は JavaScript で動きます。無効の場合は、上の使い分けの表で部品を決めてください。

出典#

関連#

この資料は、Webサイトを作るときに引くためのものです。 何のために作ったか。作っているのは AK²Lab。