Parallels Desktop ブラックフライデーセール 25%OFFGo!

【HTML/CSS】クリックしやすいラジオボタン、チェックボックス

クリックしやすいラジオボタン、チェックボックス

ユーザビリティという言葉をご存知でしょうか。「使いやすさ」をあらわす言葉です。

WEBサイトのフォーム入力時に、ラジオボタンやチェックボックスが選択しづらいという理由で入力を断念し離脱してしまうユーザというのは意外と多いんです。世の中どいつもこいつも短気なヤツばかりです。

この記事では、フォームのユーザビリティ向上のために、クリックしやすいラジオボタンやチェックボックスをデザインする方法を解説します。

目次

input要素だけで作ったラジオボタン、チェックボックス

まずは<input>要素だけを使ったシンプルなラジオボタンとチェックボックスの例です。ダメな例です。ユーザビリティ的には0点のクソみたいなコードです。

<p>
  <input type="radio" name="after_death" value="天国"> 天国
  <input type="radio" name="after_death" value="地獄"> 地獄
  <input type="radio" name="after_death" value="中国"> 中国
</p>

<p>
  <input type="checkbox" name="who[]" value="天使"> 天使
  <input type="checkbox" name="who[]" value="悪魔"> 悪魔
  <input type="checkbox" name="who[]" value="毛沢東"> 毛沢東
</p>
表示

天国 地獄 中国

天使 悪魔 毛沢東

実際にクリックしてみるとわかると思いますが、ラジオボタンは◯の部分、チェックボックスは□の部分をクリックしなければ選択できません。

これでは、アル中で手が震えがちな私のような人はうまくクリックできないのです。

ご存知かと思いますが、念のために。ラジオボタンは選択肢から1つの項目を選択してもらうときに、チェックボックスは複数の項目を選択してもらうときに使います。

label要素を使ったラジオボタン、チェックボックス

<label>要素を使うとユーザビリティが向上します。

for属性を使ったラベルの定義

<p>
  <input type="radio" name="after_death" id="heaven" value="天国"> <label for="heaven">天国</label>
  <input type="radio" name="after_death" id="hell" value="地獄"> <label for="hell">地獄</label>
  <input type="radio" name="after_death" id="china" value="中国"> <label for="china">中国</label>
</p>

<p>
  <input type="checkbox" name="who[]" id="angel" value="天使"> <label for="angel">天使</label>
  <input type="checkbox" name="who[]" id="demon" value="悪魔"> <label for="demon">悪魔</label>
  <input type="checkbox" name="who[]" id="mao" value="毛沢東"> <label for="mao">毛沢東</label>
</p>
表示

◯や□の部分に加えて文字をクリックしても選択できるようになりました。

<input>要素のid属性と<label>要素のfor属性を同じ値にすると、<input><label>を関連付けることができます。

暗黙のラベルの定義

<p>
  <label><input type="radio" name="after_death" value="天国"> 天国</label>
  <label><input type="radio" name="after_death" value="地獄"> 地獄</label>
  <label><input type="radio" name="after_death" value="中国"> 中国</label>
</p>

<p>
  <label><input type="checkbox" name="who[]" value="天使"> 天使</label>
  <label><input type="checkbox" name="who[]" value="悪魔"> 悪魔</label>
  <label><input type="checkbox" name="who[]" value="毛沢東"> 毛沢東</label>
</p>
表示

<input>要素と文字列を<label>で囲んで、<input>要素と文字列を関連付けることもできます。結果は同じですが、こっちのほうがシンプルに書けますね。

さて、重度のアル中の私はこれでもクリックできません。さらに改善していきましょう。

PR

無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。

CSSを使ってもっとわかりやすく

CSSを使うと、さらにユーザビリティを向上させることができます。

クリックできる範囲を広げて明示する

<p>
  <label><input type="radio" name="after_death" value="天国"> 天国</label>
  <label><input type="radio" name="after_death" value="地獄"> 地獄</label>
  <label><input type="radio" name="after_death" value="中国"> 中国</label>
</p>

<p>
  <label><input type="checkbox" name="who[]" value="天使"> 天使</label>
  <label><input type="checkbox" name="who[]" value="悪魔"> 悪魔</label>
  <label><input type="checkbox" name="who[]" value="毛沢東"> 毛沢東</label>
</p>

<style>
  label {
    padding: 8px;           /* クリック可能な領域を広げる */
    border: solid 1px #ccc; /* ボーダーを表示する */
    border-radius: 4px;     /* お好みで角丸をつける */
    cursor: pointer;        /* マウスポインタを変更する */
  }
</style>
表示

<label>要素にCSSを適用して、さらにクリックしやすくしてみました。枠の中のどこをクリックしても項目を選択することができます。

これで安心して酒が呑めますね。

選択項目を強調する

<p>
  <label><input type="radio" name="after_death" value="天国"> 天国</label>
  <label><input type="radio" name="after_death" value="地獄"> 地獄</label>
  <label><input type="radio" name="after_death" value="中国"> 中国</label>
</p>

<p>
  <label><input type="checkbox" name="who[]" value="天使"> 天使</label>
  <label><input type="checkbox" name="who[]" value="悪魔"> 悪魔</label>
  <label><input type="checkbox" name="who[]" value="毛沢東"> 毛沢東</label>
</p>

<style>
  label {
    padding: 8px;
    border: solid 1px #ccc;
    border-radius: 4px;
    cursor: pointer;
  }

  /* マウスオーバー時に背景色を変える */
  label:hover {
    background-color: #f0f8ff;
  }

  /* 選択時に背景色を変える */
  label:has(input:checked) {
    background-color: #f0f8ff;
  }
</style>
表示

CSSの擬似クラス:hoverを使って、選択項目にマウスポインタを重ねたときに背景色が変わるようにしました。

また、擬似クラス:has()を使って、選択済みの項目にも色をつけるようにしました。

記事執筆時点(2023年10月)で、:has()はFirefox以外のブラウザで使用できます。Firefoxでは使えませんが、近いうちに対応するはずなので、もう使い始めてもいいのではないでしょうか。たぶん。

さいごに

ユーザビリティは「使いやすさ」であると同時に「やさしさ」でもあるということをご理解いただけたかと思います。

そして、この「やさしさ」がユーザの離脱率を下げ、あなたの利益を爆上げさせるのです(ニヤ)。

でわでわ

クリックしやすいラジオボタン、チェックボックス

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次