複数ドロワーメニューを切り替えて表示する方法
複数ドロワーメニューを切り替えて表示する方法を紹介します。このサンプルでは、「メニューA」と「メニューB」の2つのドロワーメニューを用意し、ボタンをクリックするだけで表示する内容を切り替えられます。用途ごとに異なるメニューを表示したい場合や、管理画面・会員画面・サービス紹介などでメニューを分けたい場面に便利です。
ドロワーメニューは画面左側からスライド表示され、背景をクリックするか閉じるボタン、またはメニュー項目をクリックすると閉じます。別のメニューボタンを押した場合は、現在表示中のドロワーメニューを閉じてから切り替えるため、複数のメニューが重なって表示されることはありません。
HTML・CSS・JavaScriptだけで動作するため、そのままWebサイトへ組み込めます。メニュー項目・色・横幅・アニメーション速度なども自由に変更できるので、自分のサイトに合わせたドロワーメニューへ簡単にカスタマイズできます。
サンプルコードのご利用は自己責任でお願いいたします。
デモ
コードをコピーして使おう!
<!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="multiple-drawer-menu_wrap">
<!-- 操作エリアのタイトル -->
<div class="multiple-drawer-menu_title">
複数ドロワーメニュー
</div>
<!-- 操作エリアの説明文 -->
<p class="multiple-drawer-menu_text">
ボタンをクリックすると、それぞれ異なるドロワーメニューを表示します。
</p>
<!-- ドロワーメニューを開くボタンのグループ -->
<div class="multiple-drawer-menu_buttons">
<!-- メニューAを開くボタン -->
<button
class="multiple-drawer-menu_open"
type="button"
data-multiple-drawer-menu-open="menu-a">
メニューA
</button>
<!-- メニューBを開くボタン -->
<button
class="multiple-drawer-menu_open"
type="button"
data-multiple-drawer-menu-open="menu-b">
メニューB
</button>
</div>
</main>
<!-- ドロワーメニュー表示中の背景 -->
<div
class="multiple-drawer-menu_overlay"
data-multiple-drawer-menu-overlay>
</div>
<!-- ドロワーメニューA -->
<aside
class="multiple-drawer-menu_drawer"
data-multiple-drawer-menu-drawer="menu-a"
aria-hidden="true">
<!-- ドロワーメニュー上部 -->
<div class="multiple-drawer-menu_header">
<!-- ドロワーメニューのタイトル -->
<div class="multiple-drawer-menu_heading">
メニューA
</div>
<!-- ドロワーメニューを閉じるボタン -->
<button
class="multiple-drawer-menu_close"
type="button"
data-multiple-drawer-menu-close
aria-label="メニューAを閉じる">
</button>
</div>
<!-- メニューAのナビゲーション -->
<nav
class="multiple-drawer-menu_nav"
aria-label="メニューA">
<a
class="multiple-drawer-menu_link"
href="#home"
data-multiple-drawer-menu-link>
ホーム
</a>
<a
class="multiple-drawer-menu_link"
href="#service"
data-multiple-drawer-menu-link>
サービス
</a>
<a
class="multiple-drawer-menu_link"
href="#company"
data-multiple-drawer-menu-link>
会社概要
</a>
</nav>
</aside>
<!-- ドロワーメニューB -->
<aside
class="multiple-drawer-menu_drawer"
data-multiple-drawer-menu-drawer="menu-b"
aria-hidden="true">
<!-- ドロワーメニュー上部 -->
<div class="multiple-drawer-menu_header">
<!-- ドロワーメニューのタイトル -->
<div class="multiple-drawer-menu_heading">
メニューB
</div>
<!-- ドロワーメニューを閉じるボタン -->
<button
class="multiple-drawer-menu_close"
type="button"
data-multiple-drawer-menu-close
aria-label="メニューBを閉じる">
</button>
</div>
<!-- メニューBのナビゲーション -->
<nav
class="multiple-drawer-menu_nav"
aria-label="メニューB">
<a
class="multiple-drawer-menu_link"
href="#blog"
data-multiple-drawer-menu-link>
ブログ
</a>
<a
class="multiple-drawer-menu_link"
href="#price"
data-multiple-drawer-menu-link>
料金
</a>
<a
class="multiple-drawer-menu_link"
href="#contact"
data-multiple-drawer-menu-link>
お問い合わせ
</a>
</nav>
</aside>
<!-- JavaScriptファイルを読み込み -->
<script src="script.js"></script>
</body>
</html>
ファイル構成と設置方法
このサンプルは、HTML・CSS・JavaScriptの3ファイルで構成されています。2種類のドロワーメニューを用意し、クリックしたボタンに応じて表示するメニューを切り替えられます。HTMLではページやメニューの構造、CSSではレイアウトやスライドアニメーション、JavaScriptではメニューの切り替えや開閉処理を担当しています。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.html
ページ本体と2種類のドロワーメニューを定義しています。タイトルや説明文、ボタン名、メニュー項目を変更できます。
style.css
ドロワーメニューのデザインや横幅、背景色、余白、影、スライドアニメーションを設定しています。
script.js
ボタンごとのメニュー切り替え、ドロワーメニューの開閉、背景クリック、閉じるボタン、メニュークリック時の処理を記述しています。
設置方法・使い方
sampleフォルダ内のファイルをそのまま配置します。
index.htmlをブラウザで開くと利用できます。メニューAまたはメニューBをクリックすると対応するドロワーメニューが表示されます。閉じるボタン、背景部分、またはメニュー項目をクリックするとメニューを閉じます。
カスタマイズできる内容
index.htmlではタイトル、説明文、ボタン名、各ドロワーメニューのタイトル、メニュー項目を変更できます。
style.cssではメニューの横幅、背景色、文字色、余白、角丸、影、アニメーション速度などを変更できます。
script.jsでは表示するメニューの切り替え方法や開閉処理を変更できます。
数値調整
style.css
width:320px;
ドロワーメニューの横幅です。値を変更するとメニューの幅が変わります。
max-width:85%;
小さい画面での最大幅です。値を変更するとスマートフォン表示時の横幅が変わります。
transition:transform .35s ease;
0.35秒でドロワーメニューが開閉します。値を大きくするとゆっくり、小さくすると速く動作します。
transition:opacity .3s;
オーバーレイを0.3秒で表示・非表示にします。値を変更するとフェード速度が変わります。
レスポンシブ対応
style.cssでレスポンシブ対応しています。max-width:85%により画面幅に合わせてドロワーメニューが縮小され、@media (max-width:640px)では余白を調整しています。スマートフォン・タブレット・PCで利用できます。
コメント