【初心者でもわかる】ラジオボタンのデザインを変更して、好きなアイコンにしてしまう

【初心者でもわかる】ラジオボタンのデザインを変更して、好きなアイコンにしてしまう

どうも、7noteです。ラジオボタンのデザインを変更して、オシャレなアイコン(見本ではケーキ)に変えてしまう方法を紹介

ラジオボタンのあの「〇」って、好きなデザインに変更する方法があるってご存知でしたか?
通常のラジオボタンは機種やブラウザによってちがいますが、こんな感じのシンプルなものが多いですが・・・

普通のラジオボタン

normal.png

これを好きなデザインに変えてしまいましょう。
せっかくなので美味しそうなものに変えてみましょう。

label要素を使うので、label要素って何?という方は前回の記事をご覧ください。
【初心者でもわかる】フォーム作りに必須!inputとlabelを紐づける方法

材料はこちら(1人前)

ファイルCSSプロパティ意味
index.htmlinputタグ
labelタグ
ボタンやフォームなどを書く時に使うもの
inputと紐づけて使うもの
style.css::before
::after
疑似要素っていいます。今回は両方使います。
cake01.pngショートケーキの画像
cake02.pngチョコケーキの画像
cake03.pngカップケーキの画像

作り方

  1. index.htmlにラジオボタンを用意。
  2. style.cssで、inputを見えなくして、beforeにお皿を用意。
  3. チェックされた時、afterにそれぞれのケーキを用意して完成。

1.index.htmlにラジオボタンを用意。

index.html
<ul class="select">
  <li><input type="radio" name="cake" id="cake01"><label for="cake01">ショートケーキ</label></li>
  <li><input type="radio" name="cake" id="cake02"><label for="cake02">チョコケーキ</label></li>
  <li><input type="radio" name="cake" id="cake03"><label for="cake03">カップケーキ</label></li>
</ul>

2.style.cssで、inputを見えなくして、beforeにお皿を用意。

style.css
ul li {
  padding-left: 20px;
}

input {
  display: none;
}

label::before {
  content: "";
  width: 20px;
  height: 20px;
  display: inline-block;
  background: url(dish.png) no-repeat;
}

3. クリックされた時、afterにそれぞれのケーキを用意して完成。

style.css
label {
  position: relative;
}

input:checked + label::after {
  content: "";
  width: 20px;
  height: 20px;
  display: inline-block;
  position: absolute;
  top: 0;
  left: 0;
}

input#cake01:checked + label::after { background: url(cake01.png) no-repeat; }
input#cake02:checked +label::after { background: url(cake02.png) no-repeat; }input#cake03:checked + label::after { background: url(cake03.png) no-repeat; } 

\完成/

kansei.gif

解説・作り方のコツ

  • inputは、labelタグの前に書きます。そうすることで、:checkedでチェックの判定ができるのでその結果を次のlabel要素に反映することができます。
  • 反映させるには隣接セレクタ(+)を使い、:checkedがある時のみ:afterを表示するように作っています。

まとめ

一番好きなケーキはいちごのショートケーキです。

素材データ配布

真似して作りたい人はこの画像をダウンロードして使ってください!

dish.png
cake01.png
cake02.png
cake03.png

おそまつ!