画像付きラジオボタンを作る方法【HTML/CSS・サンプルコード付き】

ラジオボタン

画像付きラジオボタンを作る方法

画像付きラジオボタンを作る方法を紹介します。このサンプルでは、各選択肢の上に画像を表示し、その下に通常のラジオボタンと項目名を配置します。画像を確認しながらラジオボタンを選べるため、文字だけでは内容を判断しにくい選択肢でも、見た目を比較しながら1つを選択できます。

ECサイトの商品デザインやカラー選択、宿泊プラン、プロフィール画像、テーマ選択など、画像と選択肢をセットで見せたい場面に利用できます。このサンプルでは3つの画像を横並びに表示し、それぞれの画像の下にラジオボタンと項目名を配置しています。同じname属性を指定しているため、複数の候補から選択できるのは1つだけです。

JavaScriptは使用せず、HTMLとCSSだけで実装します。HTMLでは画像、項目名、radio要素のvalueや初期選択状態を変更でき、CSSでは画像サイズ、カードの余白、角丸、影、ラジオボタンの色、画像同士の間隔などを調整できます。画面幅640px以下では3列表示から1列表示へ切り替わるため、スマートフォン・タブレット・PCで利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

好きな画像を選択

画像の下にあるラジオボタンから1つ選択してください。

各画像の下にあるラジオボタンをクリックすると、3つの選択肢から1つを選択できます。

コードをコピーして使おう!

<!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="image-radio-button_wrap">

    <!-- タイトル -->
    <div class="image-radio-button_title">
      好きな画像を選択
    </div>

    <!-- 説明文 -->
    <p class="image-radio-button_text">
      画像の下にあるラジオボタンから1つ選択してください。
    </p>

    <!-- 選択肢一覧 -->
    <div class="image-radio-button_grid">

      <!-- 選択肢1 -->
      <label class="image-radio-button_item">

        <!-- 選択肢1の画像 -->
        <img
          class="image-radio-button_image"
          src="images/image1.png"
          alt="画像1">

        <!-- ラジオボタンと項目名 -->
        <span class="image-radio-button_choice">

          <input
            class="image-radio-button_input"
            type="radio"
            name="image-choice"
            value="image1">

          <span class="image-radio-button_name">
            項目1
          </span>

        </span>

      </label>

      <!-- 選択肢2 -->
      <label class="image-radio-button_item">

        <!-- 選択肢2の画像 -->
        <img
          class="image-radio-button_image"
          src="images/image2.png"
          alt="画像2">

        <!-- ラジオボタンと項目名 -->
        <span class="image-radio-button_choice">

          <input
            class="image-radio-button_input"
            type="radio"
            name="image-choice"
            value="image2"
            checked>

          <span class="image-radio-button_name">
            項目2
          </span>

        </span>

      </label>

      <!-- 選択肢3 -->
      <label class="image-radio-button_item">

        <!-- 選択肢3の画像 -->
        <img
          class="image-radio-button_image"
          src="images/image3.png"
          alt="画像3">

        <!-- ラジオボタンと項目名 -->
        <span class="image-radio-button_choice">

          <input
            class="image-radio-button_input"
            type="radio"
            name="image-choice"
            value="image3">

          <span class="image-radio-button_name">
            項目3
          </span>

        </span>

      </label>

    </div>

  </div>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルと、選択肢として表示する3枚の画像で構成されています。HTMLでは画像、ラジオボタン、項目名を組み合わせた3つの選択肢を作成し、CSSではカードの並び方、画像サイズ、余白、角丸、影、ラジオボタンの色などを設定します。JavaScriptは使用せず、HTML標準のradio要素によって複数の候補から1つだけ選択できる構成です。

sample/
├── index.html
├── style.css
└── images/
    ├── image1.png
    ├── image2.png
    └── image3.png

各ファイルの役割
index.htmlは画像付きラジオボタン全体を構成するファイルです。「好きな画像を選択」のタイトル、説明文、3枚の画像、各項目名、radio要素のvalue、初期選択状態を変更できます。3つのradio要素には同じname="image-choice"を指定しているため、選択できる項目は1つだけです。

style.cssは画像付きラジオボタンの見た目を設定するファイルです。全体の横幅、カード同士の間隔、画像の比率、カードの余白、角丸、影、ラジオボタンの大きさや選択色、文字サイズなどを変更できます。

imagesフォルダには選択肢として表示する画像を配置します。このサンプルではimage1.pngimage2.pngimage3.pngを使用します。画像ファイルは利用者側で用意してください。

設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置し、その中へimagesフォルダを作成します。選択肢として使用する3枚の画像をimage1.pngimage2.pngimage3.pngのファイル名でimagesフォルダへ配置してください。別のファイル名を使用する場合は、index.html内の各srcも実際のファイル名に合わせて変更します。

配置が完了したらsample/index.htmlをブラウザで開きます。3つの画像付き選択肢が表示され、各画像の下にラジオボタンと項目名が表示されます。ラジオボタンをクリックするとその項目が選択され、別の項目を選択すると前の選択が解除されます。

カスタマイズできる内容
index.htmlでは「好きな画像を選択」のタイトル、「画像の下にあるラジオボタンから1つ選択してください。」の説明文、各画像のsrcalt、項目名、radio要素のvalueを変更できます。checkedを付ける項目を変更すると、ページを開いたときに最初から選択されている項目も変更できます。

選択肢を追加する場合は、既存のimage-radio-button_itemと同じ構造を追加します。同じグループから1つだけ選ばせる場合は、新しく追加したradio要素にも同じname="image-choice"を指定します。

style.cssでは全体の最大横幅、カードの列数、画像同士の間隔、カードの内側余白、画像の縦横比、角丸、影、ラジオボタンと項目名の間隔、ラジオボタンのサイズ、選択時の色などを変更できます。

数値調整
style.css

max-width:760px;
画像付きラジオボタン全体の最大横幅です。値を大きくすると全体が横へ広がり、小さくするとコンパクトになります。

margin:40px auto;
全体の上下余白です。40pxを大きくすると上下の間隔が広がります。

padding:32px;
全体の内側余白です。値を大きくすると内容と外枠の間隔が広がります。

border-radius:18px;
全体の角丸です。値を大きくすると丸みが強くなります。

font-size:22px;
タイトルの文字サイズです。値を大きくするとタイトルが大きく表示されます。

grid-template-columns:repeat(3,minmax(0,1fr));
PC表示時に選択肢を3列で並べる設定です。3の値を変更すると1行に表示する列数を変更できます。

gap:16px;
各選択肢の間隔です。値を大きくするとカード同士が離れ、小さくすると近くなります。

padding:10px;
各カードの内側余白です。値を大きくすると画像とカード外枠の間隔が広がります。

border-radius:14px;
各カードの角丸です。値を大きくするとカードの丸みが強くなります。

box-shadow:0 8px 20px rgba(15,23,42,.08);
カードの影です。8pxや20pxを変更すると影の位置や広がりを調整できます。

aspect-ratio:3 / 2;
選択肢画像を横3・縦2の比率で表示します。

border-radius:8px;
画像の角丸です。値を大きくすると画像の丸みが強くなります。

gap:8px;
ラジオボタンと項目名の間隔です。値を大きくすると左右の間隔が広がります。

padding:14px 6px 4px;
ラジオボタンと項目名を配置する部分の余白です。最初の14pxを大きくすると画像との間隔が広がります。

width:18px;height:18px;
ラジオボタンの大きさです。値を大きくするとラジオボタンが大きく表示されます。

font-size:16px;
項目名の文字サイズです。値を大きくすると項目名が大きく表示されます。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssでは全体へwidth:100%max-width:760pxを指定しているため、画面幅に合わせて縮小されます。

画面幅640px以下では全体の余白を24px 18pxへ変更し、grid-template-columns:1fr;によって3列表示から1列表示へ切り替えます。そのため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント