ページ読み込み時にドロワーメニューを自動で開く方法
ページを読み込んだタイミングで、ドロワーメニューを自動で開く方法を紹介します。このサンプルでは、利用者が「メニューを開く」ボタンをクリックしなくても、ページの読み込みが完了すると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 ダウンロードしたけど、これをネット上で動かすにはどうするの?
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・タブレット・スマートフォンの画面幅に合わせて利用できます。
コメント