コピペで完結!モーダルウインドウ#01【HTML/CSS/JS】

html/css/js

モーダルウインドウの実装(ボタンで開く)

背景を暗くして前面に小窓を出す「モーダルウインドウ」を、HTML / CSS / JS だけで実装します。
下のデモで挙動を確認しつつ、タブ切替のコードブロック(コピー可)から必要なパートだけ持ち出せます。

コードについて 本記事のコードは AI(ChatGPT)による生成をベースに作成・調整しています。ご利用の環境でテストの上ご使用ください。
免責 本コードの利用に伴う不具合・損害について、当サイトは責任を負いません。自己責任にてご利用ください。

デモ

「モーダルを開く」→ 背景クリック / ESC / 閉じるボタン で閉じます。

タブ切替のコードブロック(コピー可)

<!-- ===============================================
     モーダル:HTML 構造
     - .cp-modal …… コンポーネント全体のラッパー(スコープ)
     - .btn …… 開閉トリガーボタン(開く/閉じる)
     - .layer …… 全画面の半透明暗幕(背景クリックで閉じる)
     - .dialog …… 本体(タイトル・本文・ボタンを内包)
     - aria-* …… アクセシビリティ配慮
     - tabindex="-1" …… JSでフォーカス移動を可能に
     =============================================== -->

<div class="cp-modal" id="cp-modal-1">

  <!-- 「開く」ボタン -->
  <button class="btn" data-open-modal>モーダルを開く</button>

  <!-- 背景の暗幕レイヤー -->
  <div class="layer" aria-hidden="true">

    <!-- ダイアログ本体 -->
    <div class="dialog" role="dialog" aria-modal="true" aria-labelledby="cp-modal-title" tabindex="-1">

      <h3 id="cp-modal-title">お知らせ</h3>
      <p>このモーダルは、コピペで導入できる軽量実装です。</p>

      <button class="btn" data-close-modal>閉じる</button>

    </div> <!-- /.dialog -->

  </div> <!-- /.layer -->

</div> <!-- /.cp-modal -->

ポイント

  • 開き方:ボタンで開く。表示時は親に data-open="1" を付与。
  • 閉じ方:閉じるボタン/背景クリック/ESC キー。
  • アクセシビリティ:開いたら .dialog にフォーカス、閉じたらトリガーへ返却。
  • 衝突回避:.cp-modal スコープでテーマCSSと競合しにくく。

コメント