基本のポップオーバーを作る方法【HTML/CSS/JavaScript・サンプルコード付き】

ポップオーバー

基本のポップオーバーを作る方法

基本のポップオーバーを作る方法を紹介します。このサンプルでは、ボタンをクリックすると補足情報を表示し、もう一度クリックすると閉じるシンプルなポップオーバーをHTML・CSS・JavaScriptで実装します。画面遷移を行わずに必要な情報だけを表示できるため、説明文や注意事項、補足情報などをコンパクトに表示したい場面で便利です。

管理画面のヘルプ表示、お問い合わせフォームの入力補足、ECサイトの商品説明、会員サイトの設定画面など、必要な情報だけを一時的に表示したい場面で活用できます。ポップオーバーはボタンの近くへ表示されるため、利用者は現在の画面を離れることなく内容を確認できます。クリック操作だけで開閉できるため、初心者にも分かりやすいUIとして利用できます。

タイトル、説明文、ボタンの文字、ポップオーバー内の文章はHTMLから変更でき、CSSでは背景色、文字色、余白、角丸、影、横幅などを調整できます。JavaScriptはポップオーバーの開閉処理のみを担当しているため、シンプルな構成で導入しやすく、レスポンシブにも対応した基本的なポップオーバーのサンプルとして利用できます。

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

デモ

基本のポップオーバー

ボタンをクリックするとポップオーバーが表示されます。

こちらは基本的なポップオーバーです。補足情報や説明文を表示できます。

ボタンをクリックするとポップオーバーが表示され、もう一度クリックすると閉じます。

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

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

    <!-- タイトル -->
    <div class="basic-popover_title">
      基本のポップオーバー
    </div>

    <!-- 説明文 -->
    <p class="basic-popover_text">
      ボタンをクリックするとポップオーバーが表示されます。
    </p>

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

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

      <!-- ポップオーバー -->
      <div
        class="basic-popover_popup"
        id="basic-popover-popup"
        role="status"
        aria-hidden="true">

        こちらは基本的なポップオーバーです。補足情報や説明文を表示できます。

      </div>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは表示切り替えボタンとポップオーバーを配置し、CSSではボタンの下へ補足情報を表示するデザインを設定します。JavaScriptではボタンのクリックを監視し、ポップオーバーの表示・非表示を切り替える処理を行います。

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

各ファイルの役割
index.htmlはポップオーバー全体を構成するファイルです。タイトル、説明文、ボタンの文字、ポップオーバー内に表示する補足情報を変更できます。ボタンとポップオーバーを同じ配置領域へまとめることで、ボタンの下へ関連する情報を表示します。

style.cssはポップオーバー全体、表示切り替えボタン、補足情報の表示位置やデザインを設定するファイルです。横幅、余白、背景色、文字色、枠線、角丸、影、三角形、表示アニメーションなどを変更できます。

script.jsはボタンをクリックしたときにポップオーバーを開閉するファイルです。表示用クラスの追加・削除とあわせて、aria-expandedaria-hiddenの値も更新します。

設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。「ポップオーバーを表示」ボタンをクリックすると、ボタンの下へ補足情報が表示されます。もう一度同じボタンをクリックすると非表示へ戻ります。

カスタマイズできる内容
index.htmlではタイトル、説明文、ボタン名、ポップオーバー内の文章を変更できます。お問い合わせフォームの入力補足、管理画面のヘルプ、商品情報の追加説明など、用途に合わせた内容へ変更できます。

style.cssでは全体の最大横幅、余白、背景色、ボタンの色、ポップオーバーの横幅、表示位置、角丸、影、文字サイズ、三角形の大きさを変更できます。ポップオーバーは.basic-popover_areaを基準に配置されるため、ボタンと一緒に移動します。

script.jsではボタンをクリックしたときの開閉処理を変更できます。表示状態にはis-openクラスを使用しており、このクラスに対応するCSSを編集すると表示方法を調整できます。

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

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

padding:14px 28px;
表示切り替えボタンの内側余白です。上下の14pxを大きくするとボタンが高くなり、左右の28pxを大きくすると横に広がります。

top:calc(100% + 16px);
ボタンとポップオーバーの上下間隔です。16pxを大きくするとボタンから離れ、小さくすると近くなります。

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

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

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

box-shadow:0 12px 30px ...
ポップオーバーの影です。12pxは縦方向の位置、30pxはぼかしの広がりを表します。値を大きくすると影が広く柔らかくなります。

width:16px;height:16px;
ポップオーバー上部に表示する三角形の大きさです。値を大きくすると三角形も大きくなります。

transform:translate(-50%,-8px);
非表示時のポップオーバー位置です。-8pxを大きくすると表示前の位置がさらに上へ移動します。

transition:0.3s;
ポップオーバーが表示・非表示へ切り替わる時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxにより、画面幅に合わせて全体が縮小されます。ポップオーバーにはmax-width:calc(100vw - 40px)を設定しているため、画面幅からはみ出しにくい構成です。また、640px以下ではボタンとポップオーバーを横幅いっぱいに表示し、全体の内側余白も小さくしているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント