外側クリックで閉じられるポップオーバーの作り方【HTML/CSS/JavaScript・サンプルコード付き】

ポップオーバー

外側クリックで閉じられるポップオーバーの作り方

外側クリックで閉じられるポップオーバーの作り方を紹介します。このサンプルでは、ボタンをクリックするとポップオーバーを表示し、ポップオーバーやボタン以外の場所をクリックすると自動で閉じる動作を実装します。補足情報や説明文、操作ガイドなどを必要なときだけ表示したい場面で利用できます。

管理画面の操作説明、お問い合わせフォームの入力補助、ECサイトの商品説明、会員サイトのヘルプ表示など、画面を大きく切り替えずに情報を表示したい場面に適しています。表示中に画面の外側をクリックするだけで閉じられるため、直感的に操作でき、画面もすっきり保てます。

ボタンの文字、ポップオーバー内のタイトルや説明文はHTMLから変更できます。CSSでは色やサイズ、余白、角丸、影、表示位置を調整でき、JavaScriptでは開閉処理や外側クリック時の動作を変更できます。レスポンシブにも対応しているため、スマートフォン・タブレット・PCで利用しやすいポップオーバーのサンプルです。

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

デモ

外側クリックで閉じられるポップオーバー

ボタンをクリックすると表示され、外側をクリックすると閉じます。

このポップオーバーはボタン以外の場所をクリックすると自動で閉じます。

「ポップオーバーを表示」をクリックすると表示されます。ボタンやポップオーバー以外の場所をクリックすると閉じる動作を確認できます。

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

<!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="outside-click-popover_wrap">

    <!-- タイトル -->
    <div class="outside-click-popover_title">
      外側クリックで閉じられるポップオーバー
    </div>

    <!-- 説明文 -->
    <p class="outside-click-popover_text">
      ボタンをクリックすると表示され、外側をクリックすると閉じます。
    </p>

    <!-- ボタンとポップオーバーの配置領域 -->
    <div class="outside-click-popover_area">

      <!-- 表示切り替えボタン -->
      <button
        class="outside-click-popover_button"
        id="outside-click-popover-button"
        type="button"
        aria-controls="outside-click-popover-box"
        aria-expanded="false">
        ポップオーバーを表示
      </button>

      <!-- ポップオーバー -->
      <div
        class="outside-click-popover_box"
        id="outside-click-popover-box"
        role="status"
        aria-hidden="true">

        このポップオーバーはボタンやポップオーバー以外の場所をクリックすると自動で閉じます。

      </div>

    </div>

  </div>

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

</body>
</html>

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではポップオーバーの構造を作成し、CSSではボタンやポップオーバーのデザインと表示アニメーションを設定しています。JavaScriptではボタンをクリックしたときの表示切り替えと、ボタンやポップオーバー以外の場所をクリックしたときに自動で閉じる処理を実装しています。

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

各ファイルの役割
index.htmlはポップオーバー全体の構造を定義するファイルです。タイトル、説明文、ボタンの文字、ポップオーバー内の文章を変更できます。

style.cssはボタンやポップオーバーのデザインを設定するファイルです。背景色、文字色、横幅、余白、角丸、影、表示アニメーションなどを変更できます。

script.jsはポップオーバーの表示・非表示を切り替える処理と、外側クリックで閉じる処理を担当しています。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。「ポップオーバーを表示」ボタンをクリックするとポップオーバーが表示され、ボタンやポップオーバー以外の場所をクリックすると自動で閉じます。

カスタマイズできる内容
index.htmlではタイトル、説明文、ボタンの文字、ポップオーバー内の文章を自由に変更できます。お知らせ、補足説明、設定内容、ヘルプなど用途に合わせた内容へ変更できます。

style.cssではボタンやポップオーバーの色、横幅、余白、角丸、影、表示位置などを変更できます。script.jsでは現在の表示・非表示の動作を維持したまま、ポップオーバー内の内容を変更してもそのまま利用できます。

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

padding:32px;
全体の内側余白です。値を大きくすると余白が広がり、小さくすると詰まった表示になります。

margin-bottom:180px;
ポップオーバーを表示するための下側の余白です。値を大きくすると下方向の表示スペースが広がります。

top:calc(100% + 18px);
ボタンとポップオーバーの間隔です。18pxを変更すると表示位置が上下します。

width:300px;
ポップオーバーの横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

padding:18px;
ポップオーバー内の余白です。値を変更すると文章と枠線の間隔が変わります。

border-radius:14px;
ポップオーバーの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

transition:.3s;
表示・非表示のアニメーション時間です。.3は0.3秒を表します。値を大きくするとゆっくり表示され、小さくすると素早く切り替わります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxにより画面幅に応じてレイアウトが調整されます。また、640px以下ではpadding:24px 18px;へ変更し、ボタンはwidth:100%、ポップオーバーもwidth:100%で表示されるため、スマートフォン・タブレット・PCで利用できます。


コメント