webデザイン・コーディングに役立つ情報、WordPressカスタムに使えるHTML・CSSコピペ用コード、Canva無料テンプレートなどをご紹介します♩

chiweblogちいウェブログ

フォームのラジオボタンをCSSカスタムで可愛くする

ラジオボタンをCSSカスタムで可愛くする
この記事を書いている人
Marie

Marie

  • フリーランスwebデザイナー&講師
  • 2児ママ
  • 制作会社・インハウスデザイナーを経験し独立
  • オンラインwebデザイン教室ちいウェブ運営
  • 仕事の合間の息抜きに植物を育てています♡
  • スプラ・DIY・将棋がすき

CSSカスタムなしのラジオボタン

何もしなければ、このように表示されると思います。

このままだとデザインに合わないな〜と思ったら、CSSで理想のデザインに整えてあげましょう。

CSSでラジオボタンを装飾

今回の見本です。

お花は画像を使用しています。

CSSでラジオボタン自体を編集することができません。

元々のラジオボタンを見えないようにし、新たにボタンを作り出す方法でカスタムしています。

HTML・CSSコードの紹介

HTML

 <form>
   
  <span class="radio-item">
    <label>
      <input type="radio" name="radio-title" value="ホームページ制作について" checked="checked">
      <span class="radio-item-label">ホームページ制作について</span>
    </label>
  </span>

  <span class="radio-item">
    <label>
      <input type="radio" name="radio-title" value="ブログ制作について">
      <span class="radio-item-label">ブログ制作について</span>
    </label>
  </span>

  <span class="radio-item">
    <label>
      <input type="radio" name="radio-title" value="お問い合わせ・ご相談">
      <span class="radio-item-label">お問い合わせ・ご相談</span>
    </label>
  </span>


</form>

このようにラジオボタンがマークアップされている場合の、今回のCSSコードはこちらです。

CSS


.radio-item label {
	position: relative;
	cursor: pointer;
	padding: 5px 5px 5px 33px;
	display: block;
}

.radio-item label::before,
.radio-item label::after {
	content: "";
	display: block; 
	border-radius: 50%;
	position: absolute;
	transform: translateY(-50%);
	top: 50%;
}

.radio-item label::before {
	background-color: #fff;
	border: 1px solid #ddd;
	border-radius: 50%;
	width: 20px;
	height: 20px;
	left: 5px;
}

.radio-item label::after {
	border-radius: 50%;
	background-image: url(/flower-purple.png);
	background-size: 100%;
	background-position: no-repeat;
	opacity: 0;
	width: 29px;
	height: 29px;
	left: 3px;
}

.radio-item label:has(input:checked)::after {
	opacity: 1;
}

.radio-item input[type="radio"] {
	position: absolute;
	white-space: nowrap;
	border: 0;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	overflow: hidden;
	height: 1px;
	width: 1px;
	margin: -1px;
	padding: 0;
}

コードの解説

まずは↓の部分で、実際にラジオボタンを非表示にしています。

.radio-item input[type="radio"] {
	position: absolute;
	white-space: nowrap;
	border: 0;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	overflow: hidden;
	height: 1px;
	width: 1px;
	margin: -1px;
	padding: 0;
}

そして、次のコードで、選択前と選択後のデザインを作っています。

beforeでは選択前の円を作成し、afterで選択後の画像を作成しています。

.radio-item label::before,
.radio-item label::after {
	content: "";
	display: block; 
	border-radius: 50%;
	position: absolute;
	transform: translateY(-50%);
	top: 50%;
}

.radio-item label::before {
	background-color: #fff;
	border: 1px solid #ddd;
	border-radius: 50%;
	width: 20px;
	height: 20px;
	left: 5px;
}

.radio-item label::after {
	border-radius: 50%;
	background-image: url(/flower-purple.png);
	background-size: 100%;
	background-position: no-repeat;
	opacity: 0;
	width: 29px;
	height: 29px;
	left: 3px;
}

そして、after(選択後のお花状態)をデフォルトでopacity: 0;(透明状態!)にしています。

.radio-item label:has(input:checked)::after {
	opacity: 1;
}

.radio-item label:has( input:checked)を使用することで、チェックされた親要素のradio-itemを取得して、opacity: 1;(見える状態)にしています。

画像を任意のものに変更したい場合は、.radio-item label::afterbackground-image: url(xxxx);URL()の中を変更してください。

チェック時の画像を変更する場合

また、チェックした場合のボタン表示を画像ではなく円にしたい場合は、backgroundにカラーを入れてください。

.radio-item label::after {
  background: #7DA0D3;
  width: 16px;
  height: 16px;
  left: 8px;
}

合わせて、widthとheightで円のサイズ、leftの位置を調整してみてくださいね。

いいなと思ったら
TAPしてね♡↓

コメントする

CAPTCHA


コメントは承認後に表示されます。

Home Webデザイン コーディング コピペ用コード フォームのラジオボタンをCSSカスタムで可愛くする

関連記事

更新通知を受け取る

不定期更新の為、更新お知らせを受け取りたい方は
ご登録ください^^

更新通知以外のメールは
お送りしませんのでご安心ください。