スクロール位置で自動表示するドロワーメニューの作り方【HTML/CSS/JavaScript・サンプルコード付き】

ドロワーメニュー

スクロール位置で自動表示するドロワーメニューの作り方

スクロール位置で自動表示するドロワーメニューの作り方を紹介します。このサンプルでは、ページを一定位置までスクロールすると画面左側からドロワーメニューが自動表示されます。JavaScriptでスクロール量を判定し、HTMLでドロワーメニューを構成、CSSでレイアウトやアニメーションを設定しています。

商品紹介やキャンペーン案内、お問い合わせへの誘導、お知らせの表示など、ユーザーがページを読み進めたタイミングで自然に案内を表示したい場面に利用できます。開閉ボタンも用意しているため、自動表示後でも自由に閉じたり再表示したりできます。

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="scroll-position-drawer-demo_wrap">

    <!-- タイトル -->
    <div class="scroll-position-drawer-demo_title">
      スクロール位置で自動表示するドロワーメニュー
    </div>

    <!-- 操作説明 -->
    <p class="scroll-position-drawer-demo_text">
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      ページを下へスクロールし、指定位置へ到達するとドロワーメニューが自動表示されます。
      ========================================
      
    </p>

  </div>

  <!-- スクロール量を確保する余白 -->
  <div class="scroll-position-drawer-demo_space"></div>

  <!-- ドロワーメニュー表示時の背景 -->
  <div
    class="scroll-position-drawer-demo_overlay"
    data-drawer-overlay
    aria-hidden="true">

    <!-- ドロワーメニュー本体 -->
    <div
      class="scroll-position-drawer-demo_drawer"
      role="dialog"
      aria-modal="true"
      aria-labelledby="scroll-position-drawer-title">

      <!-- ドロワーメニューのタイトル -->
      <div
        class="scroll-position-drawer-demo_drawer-title"
        id="scroll-position-drawer-title">
        ドロワーメニュー
      </div>

      <!-- ドロワーメニューの説明文 -->
      <p class="scroll-position-drawer-demo_drawer-text">
        指定したスクロール位置へ到達したため、自動でドロワーメニューを表示しました。
      </p>

      <!-- ドロワーメニューを閉じるボタン -->
      <button
        class="scroll-position-drawer-demo_close"
        type="button"
        data-drawer-close>
        閉じる
      </button>

    </div>

  </div>

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

</body>
</html>

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されており、ページを下へスクロールして指定した位置へ到達すると、画面左側からドロワーメニューを自動表示できます。HTMLで画面構成、CSSでレイアウトやデザイン、JavaScriptでスクロール位置の判定とドロワーメニューの表示・非表示を制御しています。

ドロワーメニューは一度だけ自動表示されるようになっており、閉じるボタンまたは背景部分をクリックすると閉じられます。スクロールを利用したお知らせやキャンペーン案内、重要なお知らせの表示などを実装する際のベースとして利用できます。

HTML・CSS・JavaScriptを分離しているため、表示する内容やスクロール位置、ドロワーメニューのデザインなどを用途に合わせて編集しやすい構成になっています。ブラウザだけで動作確認できるため、すぐに導入できます。

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

各ファイルの役割
index.html
説明エリア、スクロール用の余白、ドロワーメニュー、閉じるボタンを配置しています。タイトルや説明文、ボタンの文字などを変更できます。

style.css
ドロワーメニュー全体のレイアウトやデザインを設定しています。背景色、文字色、余白、角丸、影、横幅、アニメーションなどの見た目を変更できます。

script.js
スクロール位置を監視し、指定位置へ到達するとドロワーメニューを自動表示する処理を実装しています。また、閉じるボタンや背景クリックで閉じる処理も管理しています。

設置方法・使い方
sampleフォルダを任意の場所へ配置し、sample/index.htmlをブラウザで開いてください。ページを下へスクロールして指定位置へ到達するとドロワーメニューが自動表示されます。表示後は閉じるボタンまたは背景部分をクリックすると閉じられます。

カスタマイズできる内容
index.htmlではタイトル、説明文、ドロワーメニュー内の文章、ボタンの文字を変更できます。style.cssでは背景色、文字色、余白、角丸、影、ドロワーメニューの横幅、アニメーションなどを自由に調整できます。script.jsでは自動表示するスクロール位置や表示条件、開閉処理を変更できます。

数値調整
script.jswindow.scrollY > 300はドロワーメニューを表示するスクロール位置です。300を大きくするとより下までスクロールした後に表示され、小さくすると早い位置で表示されます。style.csswidth:360pxはドロワーメニューの横幅です。paddingを変更すると余白、border-radiusを変更すると角丸の大きさが変わります。animation:0.35s;はドロワーメニューの表示速度を表しており、値を大きくするとゆっくり、小さくすると速く表示されます。

レスポンシブ対応
style.cssではwidth:100%max-width@mediaを利用してレスポンシブ対応しています。画面サイズに応じてドロワーメニューの横幅や余白を自動調整するため、スマートフォン・タブレット・PCで利用できます。



コメント