HTML/CSSだけで複数モーダルウインドウを切り替えて表示する方法【HTML/CSS・サンプルコード付き】

モーダルウインドウ

HTML/CSSだけで複数モーダルウインドウを切り替えて表示する方法

HTML/CSSだけで複数モーダルウインドウを切り替えて表示する方法を紹介します。横並びに配置した3つのボタンから、それぞれ異なる内容のモーダルウインドウを表示できるサンプルです。JavaScriptを使用せず、HTMLのラジオボタンとlabel要素、CSSの:checkedを組み合わせて表示を切り替えます。

このサンプルでは「お知らせ」「確認画面」「詳細情報」の3つのボタンを用意しています。クリックしたボタンに対応するモーダルだけが表示され、背景または「閉じる」ボタンをクリックすると元の画面へ戻ります。アンカーリンクを使用しないため、モーダルを閉じてもページ先頭へ移動せず、開く前のスクロール位置を維持できます。

管理画面の案内、会員サイトの確認画面、ECサイトの商品説明、サービス紹介など、同じページ内で複数の情報を個別に表示したい場面に利用できます。ボタン名、モーダルタイトル、説明文、背景色、ボタン色、横幅などはHTMLとCSSで変更できるため、JavaScriptを使わずにカスタマイズしやすい構成です。

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

デモ

HTML/CSSだけで複数モーダルを切替

3つのボタンから、それぞれ異なるモーダルウインドウを表示できます。

お知らせモーダル

これは1つ目のモーダルです。お知らせや案内文を表示する用途に使えます。

確認モーダル

これは2つ目のモーダルです。確認画面や注意喚起を表示する用途に使えます。

詳細情報モーダル

これは3つ目のモーダルです。詳細情報や補足説明を表示する用途に使えます。

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

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン表示対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>HTML/CSSだけで複数モーダルウインドウを切り替えて表示</title>

  <!-- CSSファイルを読み込み -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- 複数モーダルウインドウを開く操作エリア -->
  <div class="html-css-multiple-modal-switch_wrap">

    <!-- 操作エリアのタイトル -->
    <div class="html-css-multiple-modal-switch_title">
      HTML/CSSだけで複数モーダルを切り替え
    </div>

    <!-- 操作エリアの説明文 -->
    <p class="html-css-multiple-modal-switch_text">
      3つのボタンから、それぞれ異なるモーダルウインドウを表示します。
    </p>

    <!-- モーダルを開くボタン一覧 -->
    <div class="html-css-multiple-modal-switch_buttons">

      <!-- お知らせモーダルを開くボタン -->
      <label
        for="html-css-modal-1"
        class="html-css-multiple-modal-switch_open">
        お知らせ
      </label>

      <!-- 確認画面モーダルを開くボタン -->
      <label
        for="html-css-modal-2"
        class="html-css-multiple-modal-switch_open">
        確認画面
      </label>

      <!-- 詳細情報モーダルを開くボタン -->
      <label
        for="html-css-modal-3"
        class="html-css-multiple-modal-switch_open">
        詳細情報
      </label>

    </div>

  </div>

  <!-- モーダルを閉じた状態にするラジオボタン -->
  <input
    type="radio"
    name="html-css-modal-switch"
    id="html-css-modal-close"
    class="html-css-multiple-modal-switch_check"
    checked>

  <!-- お知らせモーダルを表示するラジオボタン -->
  <input
    type="radio"
    name="html-css-modal-switch"
    id="html-css-modal-1"
    class="html-css-multiple-modal-switch_check">

  <!-- 確認画面モーダルを表示するラジオボタン -->
  <input
    type="radio"
    name="html-css-modal-switch"
    id="html-css-modal-2"
    class="html-css-multiple-modal-switch_check">

  <!-- 詳細情報モーダルを表示するラジオボタン -->
  <input
    type="radio"
    name="html-css-modal-switch"
    id="html-css-modal-3"
    class="html-css-multiple-modal-switch_check">

  <!-- すべてのモーダルで共通使用する背景 -->
  <div class="html-css-multiple-modal-switch_overlay">

    <!-- 背景クリックでモーダルを閉じる領域 -->
    <label
      for="html-css-modal-close"
      class="html-css-multiple-modal-switch_background">
    </label>

    <!-- お知らせモーダル -->
    <div class="html-css-multiple-modal-switch_modal html-css-multiple-modal-switch_modal-1">

      <!-- お知らせモーダルのタイトル -->
      <div class="html-css-multiple-modal-switch_heading">
        お知らせ
      </div>

      <!-- お知らせモーダルの説明文 -->
      <p class="html-css-multiple-modal-switch_message">
        お知らせ用のモーダルウインドウです。
      </p>

      <!-- お知らせモーダルを閉じるボタン -->
      <label
        for="html-css-modal-close"
        class="html-css-multiple-modal-switch_close">
        閉じる
      </label>

    </div>

    <!-- 確認画面モーダル -->
    <div class="html-css-multiple-modal-switch_modal html-css-multiple-modal-switch_modal-2">

      <!-- 確認画面モーダルのタイトル -->
      <div class="html-css-multiple-modal-switch_heading">
        確認画面
      </div>

      <!-- 確認画面モーダルの説明文 -->
      <p class="html-css-multiple-modal-switch_message">
        確認メッセージを表示するモーダルウインドウです。
      </p>

      <!-- 確認画面モーダルを閉じるボタン -->
      <label
        for="html-css-modal-close"
        class="html-css-multiple-modal-switch_close">
        閉じる
      </label>

    </div>

    <!-- 詳細情報モーダル -->
    <div class="html-css-multiple-modal-switch_modal html-css-multiple-modal-switch_modal-3">

      <!-- 詳細情報モーダルのタイトル -->
      <div class="html-css-multiple-modal-switch_heading">
        詳細情報
      </div>

      <!-- 詳細情報モーダルの説明文 -->
      <p class="html-css-multiple-modal-switch_message">
        詳細説明を表示するモーダルウインドウです。
      </p>

      <!-- 詳細情報モーダルを閉じるボタン -->
      <label
        for="html-css-modal-close"
        class="html-css-multiple-modal-switch_close">
        閉じる
      </label>

    </div>

  </div>

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

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLには3つのボタンと3種類のモーダルウインドウの構造、CSSにはボタンやモーダルのデザイン、表示切り替えのスタイルを記述しています。JavaScriptは使用せず、HTMLのラジオボタンとlabel要素、CSSの:checkedセレクタを組み合わせてモーダルの表示を切り替えています。

モーダルを開くボタンをクリックすると対応するラジオボタンが選択され、その状態に応じて対応するモーダルだけが表示されます。背景または「閉じる」ボタンをクリックすると閉じる状態のラジオボタンへ切り替わるため、ページのスクロール位置を維持したままモーダルを閉じられます。

JavaScriptを利用できない環境でも導入しやすく、管理画面のお知らせ、確認画面、サービス説明、プロフィール紹介など、ボタンごとに異なる内容を表示したい場面へそのまま利用できます。

sample/
├── index.html
└── style.css

各ファイルの役割
index.html
モーダルを開くボタン、ラジオボタン、モーダルウインドウのHTML構造を管理します。ボタン名、モーダルタイトル、説明文を変更できます。

style.css
ボタン、モーダルウインドウ、背景、余白、角丸、影などのデザインと、CSSだけでモーダルを切り替える表示制御を管理します。

設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置します。sample/index.htmlをブラウザで開くと動作を確認できます。3つのボタンのいずれかをクリックすると対応するモーダルウインドウが表示され、背景または「閉じる」をクリックするとモーダルを閉じます。

カスタマイズできる内容
index.htmlではボタン名、モーダルタイトル、説明文を変更できます。モーダルを追加したい場合はラジオボタン、ボタン、モーダルを追加します。style.cssではボタン色、背景色、モーダルサイズ、余白、角丸、影、ボタン配置などを変更できます。

数値調整
style.cssのmax-width:420px;を変更するとモーダルの最大横幅が変わります。padding:36px 28px 28px;を変更するとモーダル内部の余白が変わります。gap:12px;を変更するとボタン同士の間隔が変わります。border-radius:18px;を変更するとボタンやモーダルの角丸の大きさが変わります。

レスポンシブ対応
style.cssではwidth:100%、max-width、padding、@media(max-width:640px)を使用してレスポンシブ対応しています。スマートフォンではボタンが縦並びになり、モーダルも画面幅に合わせて表示されます。タブレット・PCでも中央に見やすく表示されます。


こちらもおすすめ


コメント