アクセシビリティ・操作と入力の工夫

フォームには必ずラベルを

入力欄に「何を入れるか」を確実に伝えるのがlabel。読み上げに効くだけでなく、タップできる範囲も広がる、全員が得する1タグです。

入力欄だけがぽつんとあって、何を入れるのか分からない——フォームのつまずきの多くは、ラベルの不足です。<label>は読み上げソフトに「この欄は何か」を伝え、さらにクリックできる範囲を広げる、全員が得するタグです。

HTMLフォームで入力をまとめようフォーム自体の作り方(HTML側)はこの回

体験してみよう:ラベルはタップ範囲を広げる

チェックボックスで効果がいちばん体感できます。文字のほうをクリックしてみてください。

上は文字のどこを押してもチェックが入ります。スマホの小さな画面では、この差が操作のしやすさに直結します。

書き方は2とおり

囲むのがいちばん簡単です。

<label>なまえ
  <input type="text" name="name" />
</label>

デザインの都合で離して置きたいときは、foridひもづけます。

<label for="name">なまえ</label>
<input type="text" id="name" name="name" />

forの値とidの値をそろえるのがポイント。どちらの書き方でも効果は同じです。

質問ごとのグループにも「名札」を

ラジオボタンやチェックボックスは、選択肢1つずつに<label>を付けても、「何の質問への選択肢なのか」が伝わらないことがあります。質問のまとまりは<fieldset>で囲み、質問文を<legend>に書きます。

<fieldset>
  <legend>すきなおやつは?</legend>
  <label><input type="radio" name="snack" />ひまわりの種</label>
  <label><input type="radio" name="snack" />まつぼっくり</label>
</fieldset>

読み上げソフトは「すきなおやつは?、ひまわりの種、ラジオボタン」のように、質問と選択肢をセットで読んでくれます。選択肢だけ聞こえて質問が分からない——という迷子を防げます。

fieldsetは枠を、legendはその見出しを自動で描いてくれます。質問と選択肢がひとまとまりに見えるので、目で見ても分かりやすくなります。
HTML選ぶ入力(チェックボックス・ラジオ・セレクト)ラジオボタン・チェックボックスの基本はこの回

placeholderはラベルの代わりにならない

うすい文字のヒント(placeholder)だけで済ませたフォーム、よく見かけます。

<input type="text" placeholder="なまえ" />  <!-- ❌ ラベルの代わりにはならない -->

これがダメな理由は3つあります。

  • 入力を始めると消える——「あれ、何を入れる欄だっけ?」が起きる
  • 色が薄い——前々回のコントラストの合格ラインをまず満たしていない
  • 読み上げソフトによっては読まれないことがある

placeholderは「例:しまちゃん」のような入力例にとどめ、名札はかならず<label>で。

<label for="name">なまえ</label>
<input type="text" id="name" name="name" placeholder="例:しまちゃん" />  <!-- ○ 役割分担 -->

名札は<label>で常に見えていて、入力例はplaceholderで——この役割分担なら、入力を始めてヒントが消えても困りません。

両方の欄に文字を打ってみましょう。上は「なにを入れる欄だったか」を忘れてしまいますが、下はlabelがそのまま残るので迷いません。

必須の欄は「文字」で伝える

「必須の欄は赤くしておいたから分かるよね」——これはコントラストの回で学んだ色だけで伝えないの違反です。必須であることは文字で書きます。

<label for="email">メールアドレス(必須)</label>
<input type="email" id="email" name="email" required />

ラベルに「(必須)」と書けば、目で見る人にも読み上げの人にも同じ情報が届きます。required属性を付けると、空のまま送信しようとしたときにブラウザが自動で教えてくれるようになるので、あわせて付けておきましょう。

空のまま「送信」を押すと、ブラウザが自動で「入力してください」と教えてくれます。requiredを付けるだけで、このチェックが手に入ります。

このレッスンのまとめ

  1. すべての入力欄に<label>——読み上げに伝わり、押せる範囲も広がる
  2. 書き方は「囲む」か「forとidでつなぐ」の2とおり
  3. placeholderは入力例。ラベルの代わりにしない

よくある質問

labelとplaceholderは両方書いていい?
はい、併用がおすすめです。名札はlabelで常に見せて、placeholderには「例:しまちゃん」のような入力例を書きます。placeholderだけで済ませるのがNGです。
labelは入力欄の上と左、どちらに置く?
テキスト入力欄は上か左に置きます(スマホでは上が見やすい定番)。チェックボックスとラジオボタンだけは、慣習として右側に文字を置きます。
for属性とid属性の値はなんでもいい?
なんでもかまいませんが、forとidの値が完全に一致していることと、同じidをページ内で使い回さないことが条件です。1文字でもちがうとひもづきません。