外側クリックで閉じられるポップオーバーの作り方【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などすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。ボタンをクリックするとポップオーバーが表示され、ボタンやポップオーバー以外の場所をクリックすると自動で閉じる仕組みです。レイアウトやデザインはCSSで管理し、開閉処理や外側クリックの判定はJavaScriptで行っています。各ファイルを役割ごとに分けているため、見た目と動作を個別に編集しやすい構成です。

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

各ファイルの役割
index.htmlにはボタンやポップオーバーのHTMLを記述しています。表示する文章やボタン名を変更したい場合は、このファイルを編集します。

style.cssにはレイアウトや色、余白、角丸、影、アニメーションなどの見た目をまとめています。ポップオーバーのサイズや表示位置もこのファイルから変更できます。

script.jsではポップオーバーの開閉処理を行っています。ボタンをクリックすると表示し、画面の外側をクリックすると閉じる動作を実装しています。

設置方法・使い方
3つのファイルを同じsampleフォルダへ配置してください。配置後はsample/index.htmlをブラウザで開くと動作を確認できます。ボタンをクリックするとポップオーバーが表示され、ボタンやポップオーバー以外の場所をクリックすると自動で閉じます。

カスタマイズできる内容
index.htmlではタイトルや説明文、ボタンの文字、ポップオーバー内の文章を変更できます。style.cssではボタンやポップオーバーの色、サイズ、表示位置、余白、角丸、影などを自由に調整できます。script.jsでは開閉処理を変更したり、必要に応じて他の処理を追加したりできます。

数値調整
style.cssのtransition:0.3sは表示・非表示時のアニメーション時間です。0.3は0.3秒を表しており、値を大きくするとゆっくり、小さくすると速く切り替わります。

style.cssのtop:calc(100% + 18px)の18pxはボタンとポップオーバーの間隔です。値を大きくすると離れ、小さくすると近付きます。

style.cssのwidth:300pxはポップオーバーの横幅です。値を変更すると表示サイズが変わります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのmedia queryで画面幅640px以下のレイアウトを切り替えています。width:100%max-widthpaddingを利用して画面サイズに応じた表示を行うため、スマートフォン・タブレット・PCでも利用できます。


こちらもおすすめ


コメント