選択中を強調表示するラジオボタンを作る方法
選択中の項目を強調表示するラジオボタンをHTMLとCSSで作る方法を紹介します。このサンプルでは、「HTML」「CSS」「JavaScript」「PHP」の4つの選択肢を用意し、選択した項目だけ背景色・枠線・文字色を変更します。通常のラジオボタンよりも選択状態が分かりやすく、現在どの項目を選んでいるのかを視覚的に確認できます。
選択中の項目を強調するデザインは、アンケート、設定画面、配送方法、支払い方法、商品オプションなど、複数の候補から1つを選択する場面で利用できます。各項目はlabel要素全体をクリックできるため、ラジオボタン本体だけでなく文字や余白部分からでも選択を切り替えられます。
HTMLでは通常のradio要素を使用し、CSSの:checkedを利用して選択中の項目だけデザインを変更します。ラジオボタン本体の選択状態に合わせて項目全体を強調できるため、JavaScriptは必要ありません。画面幅640px以下では全体の内側余白を小さくするレスポンシブ対応も行い、スマートフォン・タブレット・PCで利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
項目をクリックすると選択が切り替わり、選択中の項目だけ背景色・枠線・文字色が強調表示されます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<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="highlight-selected-radio-button_wrap">
<!-- タイトル -->
<div class="highlight-selected-radio-button_title">
好きな言語を選択
</div>
<!-- 説明文 -->
<p class="highlight-selected-radio-button_text">
選択中の項目だけ強調表示されます。
</p>
<!-- HTMLの選択肢 -->
<label class="highlight-selected-radio-button_label">
<input class="highlight-selected-radio-button_input" type="radio" name="language" checked>
<span class="highlight-selected-radio-button_name">HTML</span>
</label>
<!-- CSSの選択肢 -->
<label class="highlight-selected-radio-button_label">
<input class="highlight-selected-radio-button_input" type="radio" name="language">
<span class="highlight-selected-radio-button_name">CSS</span>
</label>
<!-- JavaScriptの選択肢 -->
<label class="highlight-selected-radio-button_label">
<input class="highlight-selected-radio-button_input" type="radio" name="language">
<span class="highlight-selected-radio-button_name">JavaScript</span>
</label>
<!-- PHPの選択肢 -->
<label class="highlight-selected-radio-button_label">
<input class="highlight-selected-radio-button_input" type="radio" name="language">
<span class="highlight-selected-radio-button_name">PHP</span>
</label>
</div>
</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。 サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTMLとCSSの2ファイルで構成されています。「HTML」「CSS」「JavaScript」「PHP」の4つのラジオボタンを縦に配置し、選択中の項目だけ背景色・枠線・文字色を変更します。選択状態の判定にはCSSの:checkedを使用するため、JavaScriptを使わずに強調表示を切り替えられます。
sample/
├── index.html
└── style.css
各ファイルの役割
index.htmlはラジオボタン全体を構成するファイルです。「HTML」「CSS」「JavaScript」「PHP」の4つのradio要素を配置し、すべてに共通のname="language"を指定して1つだけ選択できるようにしています。HTMLのradio要素にはcheckedを指定しているため、ページを開いた時点ではHTMLが選択されています。
style.cssはラジオボタンと選択中の強調表示を設定するファイルです。通常の項目は白い背景で表示し、radio要素が選択されると:checkedと:has()によってlabel要素の背景色と枠線を変更します。同時に選択中の文字も青色へ変更します。
設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置します。2つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssを読み込む構成になっているため、JavaScriptや外部ライブラリは必要ありません。別の項目をクリックすると選択が切り替わり、新しく選択した項目だけが強調表示されます。
カスタマイズできる内容
index.htmlではタイトル、説明文、「HTML」「CSS」「JavaScript」「PHP」の選択肢を変更できます。初期選択を変更する場合は、HTMLに指定しているcheckedを外し、最初に選択したいradio要素へ指定します。同じグループとして1つだけ選択させる項目には、共通のname属性を指定します。
style.cssでは全体の最大横幅、各項目の余白、枠線、角丸、ラジオボタンの大きさ、文字サイズ、選択中の背景色や枠線色などを変更できます。特に:has()を指定した部分を変更すると、選択中の項目全体の強調デザインを調整できます。
数値調整
style.css
max-width:640px;
ラジオボタン全体の最大横幅です。値を大きくすると全体が横に広がり、小さくするとコンパクトになります。
margin:40px auto;
全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
全体の内側余白です。値を大きくすると内容と外枠との間隔が広がり、小さくすると狭くなります。
border-radius:18px;
全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくするとタイトルが大きくなり、小さくすると小さくなります。
gap:12px;
ラジオボタンと文字の間隔です。値を大きくすると間隔が広がり、小さくすると近くなります。
padding:14px 16px;
各選択肢の内側余白です。上下の14pxを大きくすると項目が高くなり、左右の16pxを大きくすると内容と枠線との間隔が広がります。
margin-bottom:14px;
選択肢同士の上下間隔です。値を大きくすると項目同士が離れ、小さくすると近くなります。
border-radius:10px;
各選択肢の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
width:20px;・height:20px;
ラジオボタン本体の大きさです。値を大きくするとラジオボタンが大きくなり、小さくすると小さくなります。
font-size:16px;
選択肢の文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssではwidth:100%とmax-width:640pxによって、画面幅に合わせて全体が縮小されます。画面幅640px以下ではメディアクエリによって全体の内側余白をpadding:20px;へ変更し、スマートフォンでも左右に余白を確保して表示できます。
コメント