カード型ラジオボタンを作る方法
カード型ラジオボタンを作る方法を紹介します。通常のラジオボタンをカードデザインで表示し、選択中の項目だけ背景色や枠線が変化する見やすいUIをHTMLとCSSだけで実装します。JavaScriptを使用しないため、そのままブラウザで動作を確認できます。
選択肢をカードとして大きく表示できるため、プラン選択や配送方法、支払い方法、デザインテーマの選択など、クリックしやすさと視認性を重視した入力フォームに適しています。選択状態が一目で分かるため、管理画面やお問い合わせフォーム、会員サイトなど幅広いWebサイトで利用できます。
サンプルではカード型ラジオボタンの基本的な実装を紹介しています。カード内の文字、色、枠線、角丸、余白、カードサイズ、選択時の配色などはCSSから自由に変更できるため、サイトデザインに合わせてカスタマイズしやすい構成になっています。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コードをUTF-8に設定 -->
<meta charset="UTF-8">
<!-- スマートフォンやタブレットの画面幅に対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ブラウザのタブに表示するページタイトル -->
<title>カード型ラジオボタン</title>
<!-- カード型ラジオボタンのCSSを読み込み -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- カード型ラジオボタン全体 -->
<div class="card-radio-button_demo_wrap">
<!-- 選択エリアのタイトル -->
<div class="card-radio-button_demo_title">
好きな言語を選択
</div>
<!-- 操作方法を案内する説明文 -->
<p class="card-radio-button_demo_text">
カードをクリックすると選択状態が切り替わります。
</p>
<!-- 6つのカード型ラジオボタン一覧 -->
<div class="card-radio-button_demo_list">
<!-- HTMLの選択カード -->
<div class="card-radio-button_demo_item">
<!-- HTMLを選択するラジオボタン -->
<input
class="card-radio-button_demo_input"
id="card-radio-html"
type="radio"
name="card-language"
value="html">
<!-- HTMLのカード型ラベル -->
<label class="card-radio-button_demo_label" for="card-radio-html">
<!-- HTMLカードのアイコン -->
<div class="card-radio-button_demo_icon">💻</div>
<!-- HTMLカードの項目名 -->
<div class="card-radio-button_demo_name">HTML</div>
<!-- HTMLカードの説明 -->
<div class="card-radio-button_demo_desc">マークアップ</div>
</label>
</div>
<!-- CSSの選択カード -->
<div class="card-radio-button_demo_item">
<!-- CSSを選択するラジオボタン -->
<input
class="card-radio-button_demo_input"
id="card-radio-css"
type="radio"
name="card-language"
value="css">
<!-- CSSのカード型ラベル -->
<label class="card-radio-button_demo_label" for="card-radio-css">
<!-- CSSカードのアイコン -->
<div class="card-radio-button_demo_icon">🎨</div>
<!-- CSSカードの項目名 -->
<div class="card-radio-button_demo_name">CSS</div>
<!-- CSSカードの説明 -->
<div class="card-radio-button_demo_desc">デザイン</div>
</label>
</div>
<!-- JavaScriptの選択カード -->
<div class="card-radio-button_demo_item">
<!-- JavaScriptを初期選択するラジオボタン -->
<input
class="card-radio-button_demo_input"
id="card-radio-javascript"
type="radio"
name="card-language"
value="javascript"
checked>
<!-- JavaScriptのカード型ラベル -->
<label class="card-radio-button_demo_label" for="card-radio-javascript">
<!-- JavaScriptカードのアイコン -->
<div class="card-radio-button_demo_icon">⚙️</div>
<!-- JavaScriptカードの項目名 -->
<div class="card-radio-button_demo_name">JavaScript</div>
<!-- JavaScriptカードの説明 -->
<div class="card-radio-button_demo_desc">動きを追加</div>
</label>
</div>
<!-- PHPの選択カード -->
<div class="card-radio-button_demo_item">
<!-- PHPを選択するラジオボタン -->
<input
class="card-radio-button_demo_input"
id="card-radio-php"
type="radio"
name="card-language"
value="php">
<!-- PHPのカード型ラベル -->
<label class="card-radio-button_demo_label" for="card-radio-php">
<!-- PHPカードのアイコン -->
<div class="card-radio-button_demo_icon">🐘</div>
<!-- PHPカードの項目名 -->
<div class="card-radio-button_demo_name">PHP</div>
<!-- PHPカードの説明 -->
<div class="card-radio-button_demo_desc">サーバー処理</div>
</label>
</div>
<!-- Pythonの選択カード -->
<div class="card-radio-button_demo_item">
<!-- Pythonを選択するラジオボタン -->
<input
class="card-radio-button_demo_input"
id="card-radio-python"
type="radio"
name="card-language"
value="python">
<!-- Pythonのカード型ラベル -->
<label class="card-radio-button_demo_label" for="card-radio-python">
<!-- Pythonカードのアイコン -->
<div class="card-radio-button_demo_icon">🐍</div>
<!-- Pythonカードの項目名 -->
<div class="card-radio-button_demo_name">Python</div>
<!-- Pythonカードの説明 -->
<div class="card-radio-button_demo_desc">データ処理</div>
</label>
</div>
<!-- SQLの選択カード -->
<div class="card-radio-button_demo_item">
<!-- SQLを選択するラジオボタン -->
<input
class="card-radio-button_demo_input"
id="card-radio-sql"
type="radio"
name="card-language"
value="sql">
<!-- SQLのカード型ラベル -->
<label class="card-radio-button_demo_label" for="card-radio-sql">
<!-- SQLカードのアイコン -->
<div class="card-radio-button_demo_icon">🗄️</div>
<!-- SQLカードの項目名 -->
<div class="card-radio-button_demo_name">SQL</div>
<!-- SQLカードの説明 -->
<div class="card-radio-button_demo_desc">データベース</div>
</label>
</div>
</div>
<!-- 選択動作を案内する補足文 -->
<p class="card-radio-button_demo_note">
選択中のカードだけ色が変化し、常に1つだけ選択できます。
</p>
</div>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTMLとCSSの2ファイルで構成された、カード型ラジオボタンのサンプルです。HTMLでラジオボタンとカードの構造を作成し、CSSでカードデザインや選択時の色変更、レイアウトを設定しています。JavaScriptを使用せず、標準のラジオボタンだけで常に1つだけ選択できるカード型UIを実装しています。
sample/
├── index.html
└── style.css
各ファイルの役割
index.html
カード型ラジオボタンのHTMLを記述しています。カードの追加・削除、表示する項目名や説明文、初期選択する項目を変更できます。
style.css
カードの色、サイズ、余白、角丸、枠線、文字サイズ、選択時の背景色や文字色、レスポンシブレイアウトを設定しています。
設置方法・使い方
sampleフォルダ内へindex.htmlとstyle.cssを配置してください。
配置後はsample/index.htmlをブラウザで開くだけで利用できます。
カードをクリックすると選択状態が切り替わり、常に1つだけ選択されます。
カスタマイズできる内容
index.htmlではカードの項目名、説明文、アイコン、カード数、初期選択する項目を変更できます。
style.cssではカードの背景色、選択時の色、文字色、枠線、余白、角丸、カードサイズ、カード間隔、文字サイズなどを自由に調整できます。
数値調整
style.css
max-width:900px;
サンプル全体の最大横幅です。値を大きくすると表示領域が広くなります。
style.css
grid-template-columns:repeat(3,1fr);
PCで表示する列数です。値を変更すると1行に表示するカード数が変わります。
style.css
gap:20px;
カード同士の間隔です。値を大きくすると余白が広くなります。
style.css
padding:22px;
カード内の余白です。値を変更するとカードの大きさや余白が変わります。
style.css
border-radius:16px;
カードの角丸です。値を大きくすると丸みが強くなります。
レスポンシブ対応
style.cssのmedia queryでレスポンシブ対応しています。PCでは3列表示、タブレットでは2列表示、スマートフォンでは1列表示へ自動で切り替わります。また、width:100%、max-width、paddingを使用しているため、スマートフォン・タブレット・PCでもレイアウトが崩れにくく快適に利用できます。
コメント