HTML/CSSだけで動くモーダルウインドウの作り方【HTML/CSS・サンプルコード付き】

モーダルウインドウ
無料ツール
モーダルウインドウを自由に作成

テキスト・表示ボタン・サイズ・余白・角丸・背景色・文字色・影などを設定して、HTML・CSS・JavaScriptを自動生成できます。

モーダルウインドウ作成ツールを使う
新しいタブで開きます

HTML/CSSだけで動くモーダルウインドウの作り方

モーダルウインドウは、現在のページを表示したまま、画面の中央に別の内容を表示したいときに使えるUIです。通常はJavaScriptを使って開閉を制御しますが、HTMLのラジオボタンとCSSの:checkedを組み合わせることで、JavaScriptを使わずに開閉することもできます。

このサンプルでは、「モーダルを開く」をクリックすると画面中央にモーダルウインドウを表示し、モーダル内の「閉じる」をクリックすると非表示にします。基本のモーダルウインドウと同じように背景の暗転やぼかしは使用せず、モーダル本体だけが表示されるシンプルな構成です。

JavaScriptを使用しないため、HTMLとCSSだけで完結するモーダルウインドウとして利用できます。簡単な案内や補足説明、確認メッセージなどをページ上に表示したい場合に使いやすく、モーダルの横幅や余白、背景色、ボタンのデザインなどもCSSから調整できます。

コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。

免責事項
本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

HTML/CSSだけで動くモーダルウインドウ

JavaScriptを使用せず、HTMLとCSSだけでモーダルウインドウを表示できます。

「モーダルを開く」をクリックすると画面中央にモーダルウインドウが表示されます。「閉じる」をクリックするとモーダルウインドウが非表示になります。

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

<!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-modal-window_wrap">

          <!-- タイトル -->
          <div class="html-css-modal-window_title">
            HTML/CSSだけで動くモーダルウインドウ
          </div>

          <!-- 説明文 -->
          <p class="html-css-modal-window_text">
            JavaScriptを使用せず、HTMLとCSSだけでモーダルウインドウを表示できます。
          </p>

          <!-- モーダルウインドウを開くラベル -->
          <label
            for="html-css-modal-window-open"
            class="html-css-modal-window_open">
            モーダルを開く
          </label>

        </div>

        <!-- 閉じた状態を管理するラジオボタン -->
        <input
          type="radio"
          name="html-css-modal-window-switch"
          id="html-css-modal-window-close"
          class="html-css-modal-window_check"
          checked>

        <!-- 開いた状態を管理するラジオボタン -->
        <input
          type="radio"
          name="html-css-modal-window-switch"
          id="html-css-modal-window-open"
          class="html-css-modal-window_check">

        <!-- モーダルウインドウ -->
        <div
          class="html-css-modal-window_modal"
          role="dialog"
          aria-labelledby="html-css-modal-window-title">

          <!-- モーダルウインドウのタイトル -->
          <div
            class="html-css-modal-window_modal-title"
            id="html-css-modal-window-title">
            モーダルタイトル
          </div>

          <!-- モーダルウインドウの本文 -->
          <p class="html-css-modal-window_modal-text">
            このモーダルウインドウはHTMLとCSSのみで動作しています。
          </p>

          <!-- モーダルウインドウを閉じるラベル -->
          <label
            for="html-css-modal-window-close"
            class="html-css-modal-window_close">
            閉じる
          </label>

        </div>

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

Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。

InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLではモーダルウインドウの内容と、開閉状態を管理する2つのラジオボタン、開く・閉じる操作を行うlabel要素を配置します。CSSではモーダルウインドウの表示位置やデザインを設定し、:checkedを利用して表示・非表示を切り替えます。JavaScriptは使用しません。

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

各ファイルの役割
index.htmlはモーダルウインドウ全体を構成するファイルです。「HTML/CSSだけで動くモーダルウインドウ」のタイトル、説明文、「モーダルを開く」の文字、モーダル内のタイトル・本文、「閉じる」の文字を変更できます。また、同じname属性を持つ2つのラジオボタンによって、モーダルの開閉状態を管理します。

style.cssは表示エリア、開くボタン、モーダルウインドウ、閉じるボタンのデザインと表示状態を設定するファイルです。#html-css-modal-window-open:checked~.html-css-modal-window_modalによって、開く状態のラジオボタンが選択されたときだけモーダルウインドウを表示します。背景を暗くするオーバーレイやぼかしは設定していないため、モーダルウインドウ本体だけが画面中央に表示されます。

設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置します。2つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssを読み込む構成になっています。「モーダルを開く」をクリックすると開いた状態のラジオボタンが選択され、画面中央にモーダルウインドウが表示されます。モーダル内の「閉じる」をクリックすると閉じた状態のラジオボタンへ切り替わり、モーダルウインドウが非表示になります。

カスタマイズできる内容
index.htmlでは表示エリアのタイトル、説明文、「モーダルを開く」の文字、モーダルウインドウ内のタイトル・本文、「閉じる」の文字を変更できます。style.cssでは表示エリアとモーダルウインドウの横幅、余白、背景色、文字色、角丸、影、開くボタンと閉じるボタンの色や大きさを変更できます。モーダルウインドウはposition:fixed;で画面を基準に配置し、top:50%;、left:50%;、transform:translate(-50%,-50%);によって画面中央へ表示しています。

数値調整
style.css
padding:40px 20px;
ページ全体の内側余白です。上下の40pxを大きくすると上下の余白が広がり、左右の20pxを大きくすると画面端との間隔が広がります。

max-width:700px;
表示エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
表示エリアの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。

padding:32px;
表示エリアの内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると詰まった表示になります。

border:1px solid #e5e7eb;
表示エリアの枠線です。1pxを大きくすると枠線が太くなり、小さくすると細くなります。

border-radius:18px;
表示エリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

font-size:22px;
表示エリアとモーダルウインドウのタイトル文字サイズです。値を大きくすると文字が大きくなり、小さくすると控えめになります。

margin:0 0 12px;
タイトルの下側余白です。12pxを大きくすると次の文章との間隔が広がり、小さくすると狭くなります。

margin:0 0 24px;
説明文とモーダル本文の下側余白です。24pxを大きくすると次のボタンとの間隔が広がり、小さくすると狭くなります。

font-size:16px;
説明文、開くボタン、モーダル本文、閉じるボタンの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。

padding:12px 24px;
「モーダルを開く」ボタンの内側余白です。上下の12pxを大きくするとボタンが高くなり、左右の24pxを大きくすると横に広がります。

border-radius:8px;
開くボタンと閉じるボタンの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

opacity:.9;
開くボタンと閉じるボタンへマウスを重ねたときの透明度です。値を小さくするとより薄く表示され、1に近づけると通常時との差が小さくなります。

top:50%;
モーダルウインドウを画面上端から50%の位置へ配置します。この値はtransform:translate(-50%,-50%);と組み合わせて縦方向の中央配置に使用しています。

left:50%;
モーダルウインドウを画面左端から50%の位置へ配置します。この値はtransform:translate(-50%,-50%);と組み合わせて横方向の中央配置に使用しています。

z-index:9999;
モーダルウインドウの重なり順です。値を大きくすると、より高い重なり順として扱われます。

width:calc(100% - 40px);
モーダルウインドウの横幅です。画面幅から40pxを引くことで、狭い画面でも左右に合計40pxの余白を確保します。40pxを大きくすると左右の余白が広くなり、モーダルの横幅は狭くなります。

max-width:420px;
モーダルウインドウの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

padding:28px;
モーダルウインドウの内側余白です。値を大きくすると内容と外周の間隔が広がり、小さくすると狭くなります。

border-radius:18px;
モーダルウインドウの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

box-shadow:0 20px 40px rgba(0,0,0,.2);
モーダルウインドウの影です。20pxを大きくすると影が下方向へ移動し、40pxを大きくすると影のぼかしが広がります。

padding:10px 20px;
「閉じる」ボタンの内側余白です。上下の10pxを大きくするとボタンが高くなり、左右の20pxを大きくすると横に広がります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxによって表示エリアが画面幅に合わせて縮小され、モーダルウインドウはwidth:calc(100% - 40px)とmax-width:420pxによって画面からはみ出しにくい横幅になります。また、640px以下では表示エリアとモーダルウインドウのpaddingを24px 18pxへ変更して内側余白を抑えているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント