Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8920

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

$
0
0

どうも、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
<ulclass="select"><li><inputtype="radio"name="cake"id="cake01"><labelfor="cake01">ショートケーキ</label></li><li><inputtype="radio"name="cake"id="cake02"><labelfor="cake02">チョコケーキ</label></li><li><inputtype="radio"name="cake"id="cake03"><labelfor="cake03">カップケーキ</label></li></ul>

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

style.css
ulli{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

おそまつ!

~ Qiitaで毎日投稿中!! ~
【初心者向け】HTML・CSSのちょいテク詰め合わせ


Viewing all articles
Browse latest Browse all 8920

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>