URLハッシュで開けるモーダルウインドウの作り方【HTML/CSS/JavaScript・サンプルコード付き】

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

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

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

URLハッシュで開けるモーダルウインドウの作り方

URLハッシュで開けるモーダルウインドウの作り方を紹介します。このサンプルでは、URLの末尾に「#modal」を付けた状態でページを開くと、JavaScriptがハッシュを確認してモーダルウインドウを自動表示します。通常の「モーダルを開く」ボタンからも表示できるため、ページ内の操作とURLからの直接表示を両方確認できます。

特定のお知らせや案内をURLから直接表示したい場合に利用できます。たとえば、お問い合わせ画面の補足案内、会員サイトのお知らせ、ECサイトの商品説明、管理画面の詳細情報など、特定のモーダルを開いた状態へ誘導したい場面に適しています。URLハッシュを利用するため、同じページでも通常表示とモーダル表示をURLによって分けることができます。

HTMLではモーダルを開くボタンやモーダル内のタイトル・本文を変更でき、CSSでは横幅、余白、角丸、背景色、影などを調整できます。JavaScriptでは「#modal」のハッシュを判定し、該当するURLでアクセスした場合にモーダルを表示します。画面幅が狭い場合にも収まるようレスポンシブ対応しているため、スマートフォン・タブレット・PCで利用できます。

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

デモ

URLハッシュで開けるモーダルウインドウ

URLの末尾に「#modal」がある場合、モーダルウインドウが自動で表示されます。

「#modalで開く」をクリックするとURLへ「#modal」が追加され、モーダルウインドウが表示されます。「閉じる」をクリックするとハッシュを削除してモーダルを閉じます。

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

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

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

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

  <!-- ページタイトル -->
  <title>URLハッシュで開けるモーダルウインドウ</title>

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

</head>
<body>

  <!-- 操作エリア -->
  <div class="url-hash-modal-window_wrap">

    <!-- タイトル -->
    <div class="url-hash-modal-window_title">
      URLハッシュで開けるモーダルウインドウ
    </div>

    <!-- 説明文 -->
    <p class="url-hash-modal-window_text">
      URLの末尾に「#modal」がある場合、モーダルウインドウが自動で表示されます。
    </p>

    <!-- URLへ#modalを追加するボタン -->
    <button class="url-hash-modal-window_open" type="button" data-hash-modal-open="">
      #modalで開く
    </button>

  </div>

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

    <!-- モーダルタイトル -->
    <div
      class="url-hash-modal-window_modal-title"
      id="url-hash-modal-window-title">
      URLハッシュから表示
    </div>

    <!-- モーダル本文 -->
    <p class="url-hash-modal-window_modal-text">
      URLのハッシュが「#modal」のため、モーダルウインドウが表示されています。
    </p>

    <!-- 閉じるボタン -->
    <button class="url-hash-modal-window_close" type="button" data-hash-modal-close="">
      閉じる
    </button>

  </div>

  <!-- JavaScriptファイル -->
  <script src="script.js"></script>

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

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

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではURLハッシュを追加するボタンとモーダルウインドウを配置し、CSSでは操作エリアとモーダルのデザインを設定します。JavaScriptではURLのハッシュを確認し、「#modal」の場合にモーダルを表示します。

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

各ファイルの役割
index.htmlは操作エリアとモーダルウインドウを構成するファイルです。「#modalで開く」ボタン、モーダルタイトル、本文、閉じるボタンなどを配置しています。

style.cssは操作エリアとモーダルウインドウのデザインを設定するファイルです。横幅、余白、背景色、角丸、文字サイズ、ボタン、モーダルの影などを変更できます。

script.jsはURLハッシュとモーダルの表示状態を連動させるファイルです。URLのハッシュが#modalの場合はモーダルへis-activeクラスを追加し、それ以外の場合は削除します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsが読み込まれます。通常のURLではモーダルは非表示ですが、URLの末尾へ#modalを付けて開くとモーダルウインドウが表示されます。「#modalで開く」ボタンをクリックした場合もURLへ#modalが追加されてモーダルが表示されます。閉じるボタンをクリックするとURLからハッシュが削除され、モーダルが閉じます。

カスタマイズできる内容
index.htmlでは「URLハッシュで開けるモーダルウインドウ」のタイトル、説明文、「#modalで開く」のボタン文字、モーダルタイトル、モーダル本文、閉じるボタンの文字を変更できます。style.cssでは操作エリアやモーダルの横幅、余白、背景色、角丸、文字サイズ、ボタン色、影などを変更できます。

script.jsでは#modalを判定することでモーダルを表示しています。別のハッシュ名を使用する場合は、JavaScriptのwindow.location.hash === "#modal"と、開くボタンで設定しているwindow.location.hash = "modal"の「modal」を同じ名前へ変更してください。

数値調整
style.css
max-width:700px;
操作エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

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

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

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

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

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

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

width:calc(100% - 40px);
モーダルの横幅です。画面幅から40pxを引くことで左右に余白を確保します。40pxを大きくすると画面端との余白が広がり、小さくするとモーダルを広く表示できます。

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

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

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、モーダルのpaddingも24px 18pxへ変更しているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント