スワイプ・ドラッグで閉じられるポップアップの作り方【HTML/CSS/JavaScript・サンプルコード付き】

ポップアップ

スワイプ・ドラッグで閉じられるポップアップの作り方

スワイプ・ドラッグで閉じられるポップアップの作り方を紹介します。このサンプルでは、ページを開いたときに表示されるポップアップを、左右へスワイプまたはドラッグすることで閉じられる動作を実装します。ボタンを押さなくても直感的な操作で閉じられるため、スマートフォンやタブレットでも扱いやすいポップアップを作成できます。

お知らせやキャンペーン情報、初回アクセス時の案内、利用規約への誘導、機能紹介など、一時的に表示したい情報を掲載する場面に適しています。ドラッグを開始するとポップアップが指に追従して移動し、一定距離以上動かすと閉じるため、タッチ操作に慣れたユーザーでも自然に利用できます。PCではマウスドラッグでも同じ動作を確認できます。

タイトル、説明文、ボタンの文字は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>

  <!-- ページの内容 -->
  <main class="swipe-popup_content">

    <!-- ページタイトル -->
    <div class="swipe-popup_title">
      スワイプ・ドラッグで閉じられるポップアップ
    </div>

    <!-- ページ説明文 -->
    <p class="swipe-popup_text">
      画面内のどこからでも、好きな方向へスワイプまたはドラッグすると閉じられます。
    </p>

  </main>

  <!-- 画面全体を覆うポップアップ -->
  <div class="swipe-popup_overlay" id="swipe-popup">

    <!-- ポップアップ本体 -->
    <div class="swipe-popup_box" id="swipe-popup-box">

      <!-- ポップアップの見出し -->
      <div class="swipe-popup_heading">
        お知らせ
      </div>

      <!-- ポップアップの本文 -->
      <p class="swipe-popup_message">
        画面内のどこからでも<br>
        好きな方向へスワイプ・ドラッグすると閉じられます。
      </p>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。ページを開くとポップアップが表示され、マウスや指で画面上の好きな方向へスワイプ・ドラッグするとポップアップを閉じられます。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:460px;
ポップアップの最大横幅です。値を大きくすると横幅が広がり、小さくするとコンパクトになります。

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

border-radius:20px;
ポップアップの角丸です。値を大きくすると丸みが強くなります。

script.js
const swipePopupCloseDistance=120;
120は120pxを表します。値を大きくすると長くドラッグしないと閉じず、小さくすると短い距離で閉じられます。

transform .2s ease
0.2秒で元の位置へ戻るアニメーションです。値を大きくするとゆっくり戻り、小さくすると素早く戻ります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-widthにより画面幅に合わせてポップアップのサイズが自動調整されます。また、メディアクエリで余白や文字サイズも調整しているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント