ラジオボタン Radio Button
複数の選択肢から一つだけを選ぶための排他的選択コントロール。
ライブデモ
ソースコード
<fieldset class="demo-radio">
<legend class="demo-radio-legend">配送方法を選択</legend>
<label class="demo-radio-item">
<input type="radio" name="demo-shipping" value="standard" class="demo-radio-input" checked />
<span class="demo-radio-circle"></span>
<span class="demo-radio-body">
<span class="demo-radio-label">通常配送</span>
<span class="demo-radio-desc">3〜5営業日(無料)</span>
</span>
</label>
<label class="demo-radio-item">
<input type="radio" name="demo-shipping" value="express" class="demo-radio-input" />
<span class="demo-radio-circle"></span>
<span class="demo-radio-body">
<span class="demo-radio-label">速達配送</span>
<span class="demo-radio-desc">1〜2営業日(+500円)</span>
</span>
</label>
<label class="demo-radio-item demo-radio-disabled">
<input type="radio" name="demo-shipping" value="same-day" class="demo-radio-input" disabled />
<span class="demo-radio-circle"></span>
<span class="demo-radio-body">
<span class="demo-radio-label">当日配送</span>
<span class="demo-radio-desc">現在ご利用いただけません</span>
</span>
</label>
</fieldset>.demo-radio { position: relative; border: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; max-width: 340px; }
.demo-radio-legend { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 8px; }
.demo-radio-item {
display: flex; align-items: flex-start; gap: 10px; padding: 12px;
border: 2px solid #e5e7eb; border-radius: 10px; cursor: pointer;
transition: border-color 0.2s, background 0.2s;
}
.demo-radio-item:hover { border-color: color-mix(in srgb, var(--ui-primary) 50%, transparent); }
.demo-radio-item:has(.demo-radio-input:checked) {
border-color: var(--ui-primary);
background: color-mix(in srgb, var(--ui-primary) 5%, #fff);
}
.demo-radio-item.demo-radio-disabled { opacity: 0.5; cursor: not-allowed; }
.demo-radio-input { position: absolute; opacity: 0; width: 0; height: 0; }
.demo-radio-circle {
flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%;
border: 2px solid #d1d5db; margin-top: 1px;
display: flex; align-items: center; justify-content: center;
transition: border-color 0.2s;
}
.demo-radio-circle::after {
content: ''; width: 10px; height: 10px; border-radius: 50%;
background: var(--ui-primary); transform: scale(0);
transition: transform 0.2s ease;
}
.demo-radio-input:checked + .demo-radio-circle { border-color: var(--ui-primary); }
.demo-radio-input:checked + .demo-radio-circle::after { transform: scale(1); }
.demo-radio-body { display: flex; flex-direction: column; gap: 2px; }
.demo-radio-label { font-size: 14px; font-weight: 500; color: #333; }
.demo-radio-desc { font-size: 12px; color: #6b7280; }AIプロンプト
Basic
ラジオボタンをHTML/CSSで作ってください。複数の選択肢から一つを選べるコントロールです。
Custom
以下の仕様でラジオボタンを実装してください。 - カード型レイアウト(各選択肢がカードになる) - 選択時にボーダーカラーが変わるアニメーション - プライマリカラー: #2563eb - 各選択肢に説明テキスト付き - 無効(disabled)状態のスタイル - 選択時に内側の丸がスケールインするアニメーション
Advanced
アクセシビリティ対応のラジオボタングループを実装してください。 - fieldset/legendによるグループ化 - 矢印キーで選択肢を切り替え - aria-describedby で各選択肢の詳細説明をリンク - フォーカスリングの視認性確保 - prefers-reduced-motion 対応 - エラー時の role="alert" による通知 - 横並び/縦並びのレスポンシブ切り替え