【CSS】ラジオボタンをカスタマイズする方法

HTMLのフォーム要素は、そのデフォルトのスタイリングが多くの場合あまり魅力的ではありません。特に、ラジオボタンはデザインが限られているため、多くのデザイナーと開発者がカスタマイズに頭を悩ませています。この記事では、CSSを使用してラジオボタンの見た目を劇的に改善する方法を詳しく解説します。

デフォルトのラジオボタンを非表示にする

最初のステップとして、デフォルトのラジオボタンを非表示にします。これには、opacityプロパティを使用する方法が一般的です。

input[type="radio"] {
  opacity: 0;
  position: absolute;
}

opacity: 0;によって、ラジオボタンは完全に透明になります。position: absolute;は、ラジオボタンを文書の通常のフローから取り除き、後でカスタムデザインを適用する際に邪魔にならないようにします。

この方法では、ラジオボタンは依然として存在し、機能しますが、見えなくなるだけです。これは、後でカスタムデザインを適用する際に重要です。

カスタムデザインを作成する

次に、ラジオボタンの代わりに表示する要素を作成します。これは、ラジオボタンのラベルや、ラジオボタン自体を囲む要素でスタイリングできます。

input[type="radio"] + label {
  padding-left: 30px;
  height: 25px;
  display: inline-block;
  line-height: 25px;
  background-repeat: no-repeat;
  background-position: 0 0;
  cursor: pointer;
  background-image: url('unselected-icon.png');
}

input[type="radio"]:checked + label {
  background-image: url('selected-icon.png');
}

この例では、ラジオボタンが選択されているかどうかに応じて、背景画像を変更しています。

  • padding-left: 30px; は、テキストラベルがカスタムラジオボタンと重ならないようにスペースを開けます。
  • background-image: url(‘unselected-icon.png’); と background-image: url(‘selected-icon.png’); で、選択されているかどうかでアイコンを切り替えます。

インタラクションを追加する

さらに、ホバーやフォーカス時のスタイルも追加できます。

input[type="radio"]:focus + label {
  outline: 1px solid #aaa;
}

input[type="radio"]:hover + label {
  background-image: url('hover-icon.png');
}

このステップでは、ユーザーがラジオボタンにマウスを合わせたときや、キーボードでフォーカスしたときに視覚的なフィードバックを提供します。これにより、ユーザーエクスペリエンスが向上します。

まとめ

以上が、CSSを使用してラジオボタンをカスタマイズする基本的なステップです。このテクニックをマスターすれば、フォームのUIを大幅に改善し、ユーザーエクスペリエンスを高めることができます。ぜひ挑戦してみてください。