縦に2列で並ぶラジオボタンを作る方法
縦に2列で並ぶラジオボタンをHTMLとCSSで作る方法を紹介します。このサンプルでは、「HTML」「CSS」「JavaScript」「PHP」「Python」「SQL」の6つの選択肢を2列に分けて配置します。すべてのradio要素へ同じname属性を指定しているため、2列に分かれていても6つの選択肢から1つだけを選択できます。
2列のレイアウトにすると、通常の縦並びよりも縦方向のスペースを抑えながら、複数の選択肢を見やすく整理できます。アンケート、お問い合わせ画面、会員サイトの設定画面、ECサイトの商品オプション、管理画面の条件選択など、選択肢の数が多く、1列では縦に長くなりやすい場面に利用できます。各項目はlabel要素で囲んでいるため、ラジオボタン本体だけでなく文字や項目内の余白部分をクリックしても選択できます。
CSS Gridを使用して6つの項目を2列に配置し、画面幅640px以下では1列の縦並びへ切り替えます。HTMLではタイトル、説明文、選択肢の内容や初期選択する項目を変更でき、CSSでは全体の横幅、列や行の間隔、余白、枠線、角丸、ラジオボタンや文字の大きさなどを調整できます。JavaScriptを使用しない構成で、スマートフォン・タブレット・PCの画面幅に合わせて利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<meta charset="UTF-8">
<!-- スマートフォン対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>縦に2列で並ぶラジオボタン</title>
<!-- CSSファイル -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- ラジオボタン全体 -->
<div class="two-column-radio-button_demo">
<!-- タイトル -->
<div class="two-column-radio-button_title">
好きな言語を選択
</div>
<!-- 説明文 -->
<p class="two-column-radio-button_text">
2列に並んだ選択肢から1つだけ選択できます。
</p>
<!-- 2列で並べるラジオボタン一覧 -->
<div class="two-column-radio-button_list">
<!-- HTMLの選択肢 -->
<label class="two-column-radio-button_item">
<input class="two-column-radio-button_input" type="radio" name="two-column-language" value="html"checked>
<span class="two-column-radio-button_name">HTML</span>
</label>
<!-- CSSの選択肢 -->
<label class="two-column-radio-button_item">
<input class="two-column-radio-button_input" type="radio" name="two-column-language" value="css">
<span class="two-column-radio-button_name">CSS</span>
</label>
<!-- JavaScriptの選択肢 -->
<label class="two-column-radio-button_item">
<input class="two-column-radio-button_input" type="radio" name="two-column-language" value="javascript" >
<span class="two-column-radio-button_name">JavaScript</span>
</label>
<!-- PHPの選択肢 -->
<label class="two-column-radio-button_item">
<input class="two-column-radio-button_input" type="radio" name="two-column-language" value="php">
<span class="two-column-radio-button_name">PHP</span>
</label>
<!-- Pythonの選択肢 -->
<label class="two-column-radio-button_item">
<input class="two-column-radio-button_input" type="radio" name="two-column-language" value="python">
<span class="two-column-radio-button_name">Python</span>
</label>
<!-- SQLの選択肢 -->
<label class="two-column-radio-button_item">
<input class="two-column-radio-button_input" type="radio" name="two-column-language" value="sql">
<span class="two-column-radio-button_name">SQL</span>
</label>
</div>
<!-- 選択方法の説明 -->
<p class="two-column-radio-button_note">
各項目をクリックすると選択が切り替わり、常に1つだけ選択されます。
</p>
</div>
</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。 サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLでは「HTML」「CSS」「JavaScript」「PHP」「Python」「SQL」の6つのラジオボタンを配置し、CSS Gridを使って2列に分けて表示します。すべてのradio要素へ同じname属性を指定しているため、2列に配置しても6つの選択肢から1つだけを選択できます。
sample/
├── index.html
└── style.css
各ファイルの役割
index.htmlはラジオボタン全体を構成するファイルです。タイトル、説明文、「HTML」「CSS」「JavaScript」「PHP」「Python」「SQL」の6つの選択肢を配置しています。すべてのradio要素へ同じname="two-column-language"を指定しているため、常に1つだけを選択できます。JavaScriptのradio要素にはcheckedを指定しているため、ページを開いた時点ではJavaScriptが選択されています。
style.cssはラジオボタン全体のデザインと2列レイアウトを設定するファイルです。display:grid;とgrid-template-columns:repeat(2,1fr);によって6つの選択肢を2列に配置し、3行で表示します。画面幅640px以下では1列の縦並びへ切り替えます。
設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置します。2つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssを読み込む構成になっているため、JavaScriptや外部ライブラリの準備は必要ありません。表示された6つの選択肢から項目をクリックすると選択が切り替わり、常に1つだけが選択されます。
カスタマイズできる内容
index.htmlでは「好きな言語を選択」のタイトル、説明文、「HTML」「CSS」「JavaScript」「PHP」「Python」「SQL」の選択肢を変更できます。最初から選択する項目を変更する場合は、現在JavaScriptへ指定しているcheckedを外し、初期選択したいradio要素へ指定します。同じグループとして1つだけ選択させる項目には、共通のname="two-column-language"を指定します。
style.cssでは全体の最大横幅、余白、背景色、枠線、角丸、2列に並んだ項目同士の間隔、各項目の高さや内側余白、ラジオボタンの大きさ、文字サイズなどを変更できます。grid-template-columns:repeat(2,1fr);が2列配置を作り、gap:16px;で行と列の間隔を設定しています。
数値調整
style.css
max-width:760px;
ラジオボタン全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
margin:40px auto;
ラジオボタン全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。
padding:32px;
ラジオボタン全体の内側余白です。値を大きくすると内容と外枠の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
ラジオボタン全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
margin:0 0 28px;
説明文の下側余白です。28pxを大きくすると選択肢との間隔が広がり、小さくすると狭くなります。
grid-template-columns:repeat(2,1fr);
ラジオボタンを並べる列数です。2によって2列で表示しています。列数を変更すると1行に配置する項目数が変わります。
gap:16px;
2列に並んだ選択肢同士の縦横の間隔です。値を大きくすると間隔が広がり、小さくすると近くなります。
gap:12px;
各項目内のラジオボタンと文字との間隔です。値を大きくすると間隔が広がり、小さくすると近くなります。
min-height:60px;
各選択肢の最小高さです。値を大きくすると項目が高くなり、小さくするとコンパクトになります。
padding:18px;
各選択肢の内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。
border-radius:12px;
各選択肢の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
width:20px;・height:20px;
ラジオボタン本体の大きさです。値を大きくするとラジオボタンが大きくなり、小さくすると小さくなります。
font-size:18px;
選択肢の文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
margin:24px 0 0;
選択肢と下側の説明文との間隔です。24pxを大きくすると間隔が広がり、小さくすると近くなります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:760pxによって、画面幅に合わせて全体が縮小されます。通常はgrid-template-columns:repeat(2,1fr);で6つの選択肢を2列に配置し、画面幅640px以下ではgrid-template-columns:1fr;へ変更して1列の縦並びに切り替えます。同時に全体の余白をmargin:24px auto;とpadding:24px 18px;へ変更するため、スマートフォン・タブレット・PCで利用できます。
コメント