ページ読み込み時にドロワーメニューを自動で開く方法【HTML/CSS/JavaScript・サンプルコード付き】

ドロワーメニュー
無料ツール
ドロワーメニューを自由に作成

表示位置・メニュー項目・サイズ・色・余白・閉じ方などを設定して、HTML・CSS・JavaScriptを自動生成できます。

ドロワーメニュー作成ツールを使う
新しいタブで開きます

ページ読み込み時にドロワーメニューを自動で開く方法

ページを読み込んだタイミングで、ドロワーメニューを自動で開く方法を紹介します。このサンプルでは、利用者が「メニューを開く」ボタンをクリックしなくても、ページの読み込みが完了するとJavaScriptが実行され、画面左側からドロワーメニューが自動的に表示されます。特定のページを開いた直後にメニューや案内を見せたい場合に利用できる実装です。

HTMLでドロワーメニューと半透明背景を配置し、CSSで閉じている状態と開いている状態の表示位置を設定します。JavaScriptではwindowのloadイベントを利用し、ページの読み込み完了後にドロワーメニューと半透明背景へis-activeクラスを追加します。これにより、通常のクリック操作で開くドロワーメニューとは異なり、ページを表示した時点で自動的にメニューを開けます。

キャンペーンページや会員向けページ、管理画面など、ページを開いた利用者へ最初にメニューを見せたい場面で活用できます。表示されたドロワーメニューは「閉じる」ボタンから閉じられるため、自動表示後も利用者自身で表示状態を変更できます。ドロワーメニューの横幅、背景色、メニュー項目、スライド速度などはCSSやHTMLから用途に合わせて調整できます。

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

デモ

ページ読み込み時に自動表示

ページを読み込むと、ドロワーメニューが自動的に開きます。

ページを読み込むとドロワーメニューが自動で開きます。「閉じる」をクリックすると閉じます。閉じた後は「デモを再表示」をクリックすると、自動表示と同じ動作をもう一度確認できます。

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

<!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="auto-open-drawer-menu_wrap">

    <!-- ページ内容のタイトル -->
    <div class="auto-open-drawer-menu_title">
      ページ読み込み時に自動表示
    </div>

    <!-- ページ内容の説明 -->
    <p class="auto-open-drawer-menu_text">
      ページを読み込むと、ドロワーメニューが自動的に開きます。
    </p>

  </main>

  <!-- ドロワーメニュー表示中の半透明背景 -->
  <div
    class="auto-open-drawer-menu_overlay"
    data-auto-open-drawer-menu-overlay="">
  </div>

  <!-- ドロワーメニュー本体 -->
  <aside
    class="auto-open-drawer-menu_drawer"
    data-auto-open-drawer-menu-drawer=""
    aria-hidden="true">

    <!-- ドロワーメニューの見出し -->
    <div class="auto-open-drawer-menu_heading">
      メニュー
    </div>

    <!-- メニュー項目 -->
    <nav class="auto-open-drawer-menu_nav" aria-label="メインメニュー">

      <a class="auto-open-drawer-menu_link" href="#">
        ホーム
      </a>

      <a class="auto-open-drawer-menu_link" href="#">
        サービス
      </a>

      <a class="auto-open-drawer-menu_link" href="#">
        お知らせ
      </a>

      <a class="auto-open-drawer-menu_link" href="#">
        お問い合わせ
      </a>

    </nav>

    <!-- ドロワーメニューを閉じるボタン -->
    <button
      class="auto-open-drawer-menu_close"
      type="button"
      data-auto-open-drawer-menu-close="">
      閉じる
    </button>

  </aside>

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

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

Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。

InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでページ内容、半透明背景、ドロワーメニュー、メニュー項目、「閉じる」ボタンを配置し、CSSでドロワーメニューの表示位置やスライドアニメーションを設定します。JavaScriptではページの読み込み完了を検知し、ドロワーメニューを自動的に開きます。

ページを開いた直後はドロワーメニューが画面左側へ隠れています。JavaScriptのwindow.addEventListener("load",...)が実行されると、半透明背景とドロワーメニューへis-activeクラスが追加され、画面左側からドロワーメニューが表示されます。「閉じる」ボタンをクリックするとis-activeクラスが削除され、ドロワーメニューと半透明背景が非表示になります。

このサンプルでは外部サービスや外部ライブラリを使用していないため、APIキーや利用者固有のIDなどを用意する必要はありません。配布用コードにはデモ専用の「デモを再表示」ボタンも含まれておらず、実際のページ読み込み時に1回自動で開く構成です。

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

各ファイルの役割
index.html
ページ内容、半透明背景、ドロワーメニュー本体、ナビゲーションリンク、「閉じる」ボタンを配置しています。「メニュー」の見出しや「ホーム」「サービス」「お知らせ」「お問い合わせ」の文字、各リンクの移動先などを変更する場合はindex.htmlを編集します。

style.css
ページ内容、半透明背景、ドロワーメニュー、メニューリンク、閉じるボタンのデザインを設定しています。ドロワーメニューの横幅、余白、背景色、影、メニュー項目の間隔、スライド速度などを変更する場合はstyle.cssを編集します。

script.js
ページの読み込み完了をloadイベントで検知し、openAutoOpenDrawerMenu()を実行してドロワーメニューを自動表示します。また、「閉じる」ボタンをクリックしたときはcloseAutoOpenDrawerMenu()を実行し、ドロワーメニューと半透明背景を非表示にします。

設置方法・使い方
sampleフォルダを作成し、その直下へindex.html、style.css、script.jsを配置してください。index.htmlでは<link rel="stylesheet" href="style.css">でstyle.cssを読み込み、ページ下部の<script src="script.js"></script>でscript.jsを読み込んでいます。

3つのファイルを配置したら、sample/index.htmlをブラウザで開きます。ページの読み込みが完了するとJavaScriptが実行され、ドロワーメニューが画面左側から自動的に開きます。「閉じる」をクリックするとドロワーメニューが閉じます。半透明背景にはクリックによる閉じる処理を設定していないため、背景をクリックしても閉じません。

サンプルのメニューリンクにはhref="#"を設定しています。実際のサイトで使用する場合は、index.htmlの各href="#"を移動先ページのURLやパスへ変更してください。

カスタマイズできる内容
index.htmlでは、ページ内のタイトルや説明文、ドロワーメニューの見出し、メニュー項目、リンク先、「閉じる」ボタンの文字を変更できます。メニュー項目を追加する場合は、auto-open-drawer-menu_linkクラスを付けたa要素をnav要素内へ追加します。

style.cssでは、ページ内容の最大横幅や余白、半透明背景の濃さ、ドロワーメニューの横幅、背景色、影、メニューリンクの色や角丸、開閉アニメーションの速度などを変更できます。

数値調整
style.css
max-width:700px;
ページ内容の最大横幅です。700pxを大きくすると横に広がり、小さくすると狭くなります。

padding:32px;
ページ内容の内側余白です。32pxを大きくすると内容と外枠との間隔が広がります。

border-radius:18px;
ページ内容の角丸です。18pxを大きくすると丸みが強くなります。

background:rgba(15,23,42,.35);
ドロワーメニュー表示中の半透明背景です。.35を大きくすると背景が暗くなり、小さくすると明るくなります。

transition:opacity .3s ease, visibility .3s ease;
半透明背景の表示・非表示にかかる時間です。.3sは0.3秒を表します。値を大きくするとゆっくり、小さくすると速く変化します。

width:320px;
ドロワーメニューの横幅です。320pxを大きくするとメニューが広くなり、小さくすると狭くなります。

max-width:85%;
ドロワーメニューが画面幅に対して占める最大幅です。狭い画面で画面幅の85%を超えないようにしています。

height:100vh;
ドロワーメニューの高さです。100vhでブラウザ画面の高さいっぱいに表示します。

padding:32px 24px;
ドロワーメニューの内側余白です。32pxが上下、24pxが左右の余白です。

transform:translateX(calc(-100% - 40px));
閉じている状態のドロワーメニューを画面左側へ隠す位置です。40pxを変更すると、画面外へ移動させる追加距離が変わります。

transition:transform .3s ease, visibility .3s ease;
ドロワーメニューの開閉時間です。.3sは0.3秒を表します。値を大きくするとゆっくり、小さくすると速くスライドします。

gap:10px;
ドロワーメニュー内のメニュー項目同士の間隔です。10pxを大きくすると間隔が広がります。

padding:14px 16px;
各メニューリンクの内側余白です。14pxが上下、16pxが左右の余白です。

padding:12px;
「閉じる」ボタンの内側余白です。12pxを大きくするとボタンの高さが増えます。

レスポンシブ対応
このサンプルはstyle.cssでレスポンシブ対応しています。ページ内容にはwidth:100%とmax-width:700pxを設定しているため、画面幅に合わせて縮小します。ドロワーメニューにはwidth:320pxとmax-width:85%を設定しているため、スマートフォンなどの狭い画面でも画面幅の85%を超えないように表示されます。

画面幅640px以下では@media(max-width:640px)を使用し、bodyの余白を24px 16pxへ、ページ内容とドロワーメニューの余白を24px 18pxへ縮小しています。PC・タブレット・スマートフォンの画面幅に合わせて利用できます。

こちらもおすすめ


コメント