ハンバーガーボタンからドロワーメニューを開く方法
ハンバーガーボタンからドロワーメニューを開く方法を紹介します。このサンプルでは、3本線で表示したハンバーガーボタンをクリックすると、画面左側からドロワーメニューがスライドして表示されます。通常のテキストボタンではなく、Webサイトやスマートフォン向けページでよく使われるハンバーガーボタンをメニューの起点として利用できる構成です。
ヘッダーのナビゲーション、スマートフォン向けメニュー、会員サイトのメニュー、管理画面のナビゲーションなど、限られた表示領域から必要なときだけメニューを開きたい場面に利用できます。ドロワーメニューを開いている間はページ側へ半透明の背景を表示し、メニュー内の「閉じる」ボタンをクリックすると閉じます。背景部分をクリックしても閉じないため、閉じる操作は「閉じる」ボタンだけに統一しています。
HTMLではハンバーガーボタン、ドロワーメニューの見出し、メニュー項目、閉じるボタンの文字を変更できます。CSSではハンバーガーボタンのサイズや3本線の太さ、ドロワーメニューの横幅、余白、背景色、メニュー項目のデザイン、スライド速度などを調整できます。JavaScriptではis-activeクラスの追加と削除によってドロワーメニューと半透明背景を切り替えます。画面幅640px以下では余白を小さくしているため、スマートフォン・タブレット・PCで利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
3本線のハンバーガーボタンをクリックすると、画面左側からドロワーメニューが表示されます。「閉じる」ボタンをクリックするとメニューが閉じます。半透明の背景をクリックしてもドロワーメニューは閉じません。
コードをコピーして使おう!
<!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="hamburger-drawer-menu_wrap">
<!-- タイトル -->
<div class="hamburger-drawer-menu_title">
ハンバーガーボタン
</div>
<!-- 説明文 -->
<p class="hamburger-drawer-menu_text">
3本線のボタンをクリックすると、左側からメニューが表示されます。
</p>
<!-- ハンバーガーボタン -->
<button
class="hamburger-drawer-menu_open"
type="button"
aria-label="メニューを開く"
data-hamburger-drawer-open="">
<!-- 3本線 -->
<span class="hamburger-drawer-menu_icon" aria-hidden="true">
<span></span>
<span></span>
<span></span>
</span>
</button>
</div>
<!-- ドロワーメニュー表示中の半透明背景 -->
<div
class="hamburger-drawer-menu_overlay"
data-hamburger-drawer-overlay=""></div>
<!-- ドロワーメニュー本体 -->
<div
class="hamburger-drawer-menu_drawer"
data-hamburger-drawer=""
role="dialog"
aria-modal="true"
aria-labelledby="hamburger-drawer-menu-heading">
<!-- ドロワーメニューの見出し -->
<div
class="hamburger-drawer-menu_heading"
id="hamburger-drawer-menu-heading">
メニュー
</div>
<!-- メニュー項目 -->
<nav
class="hamburger-drawer-menu_nav"
aria-label="メインメニュー">
<a class="hamburger-drawer-menu_link" href="#">
ホーム
</a>
<a class="hamburger-drawer-menu_link" href="#">
サービス
</a>
<a class="hamburger-drawer-menu_link" href="#">
お問い合わせ
</a>
</nav>
<!-- ドロワーメニューを閉じるボタン -->
<button
class="hamburger-drawer-menu_close"
type="button"
data-hamburger-drawer-close="">
閉じる
</button>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されており、3本線のハンバーガーボタンをクリックすると画面左側からドロワーメニューが表示されます。HTMLでハンバーガーボタンとメニュー項目を配置し、CSSで3本線のデザインやドロワーメニューの表示位置を設定し、JavaScriptでメニューの開閉を制御します。
ハンバーガーボタンは3つのspan要素をCSSで横線として表示する構成です。画像やアイコンライブラリを使用していないため、線の長さや太さ、間隔、ボタンの大きさなどをstyle.cssだけで変更できます。
ドロワーメニューを開くとページ側へ半透明の背景が表示され、「閉じる」ボタンをクリックするとメニューと背景が非表示になります。半透明の背景部分には閉じる処理を設定していないため、背景をクリックしてもドロワーメニューは閉じません。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.html
ハンバーガーボタン、半透明背景、ドロワーメニュー、メニュー項目、閉じるボタンを配置しています。ハンバーガーボタンの3本線は3つのspan要素で構成しています。メニューの見出しやリンク文字、リンク先などもこのファイルで変更できます。
style.css
サンプル表示エリア、ハンバーガーボタン、3本線、半透明背景、ドロワーメニュー、メニューリンク、閉じるボタンのデザインを設定しています。通常時はドロワーメニューを画面左側へ隠し、is-activeクラスが追加されると画面内へスライドして表示します。
script.js
ハンバーガーボタンと閉じるボタンによるドロワーメニューの開閉を制御しています。ハンバーガーボタンをクリックするとドロワーメニューと半透明背景へis-activeクラスを追加し、「閉じる」をクリックするとクラスを削除します。
設置方法・使い方
sampleフォルダへindex.html、style.css、script.jsを配置してください。3つのファイルは同じ階層へ保存します。準備ができたらsample/index.htmlをブラウザで開いてください。index.htmlからstyle.cssとscript.jsを読み込むため、追加のJavaScriptライブラリやアイコン画像は必要ありません。
3本線のハンバーガーボタンをクリックすると、画面左側からドロワーメニューが表示されます。メニュー内には「ホーム」「サービス」「お問い合わせ」のリンクがあり、「閉じる」ボタンをクリックするとドロワーメニューが閉じます。実際のサイトで使用する場合は、index.html内の各href="#"を移動先のURLへ変更してください。
カスタマイズできる内容
index.htmlではハンバーガーボタン、ドロワーメニューの見出し、メニュー項目、リンク先、「閉じる」ボタンの文字を変更できます。メニュー項目を増やす場合は、hamburger-drawer-menu_linkクラスを付けたリンクをnav要素内へ追加します。
style.cssではハンバーガーボタンの大きさや色、3本線の長さ・太さ・間隔、ドロワーメニューの横幅や余白、半透明背景の濃さ、メニュー項目の背景色、角丸、影、スライド速度などを変更できます。
数値調整
style.css
max-width:700px;
サンプル表示エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。
width:48px; height:48px;
ハンバーガーボタンの横幅と高さです。値を大きくするとボタン全体が大きくなり、小さくするとコンパクトになります。
width:24px;
ハンバーガーボタン内に表示する3本線の横幅です。値を大きくすると線が長くなります。
gap:5px;
3本線同士の間隔です。値を大きくすると線の間隔が広がり、小さくすると狭くなります。
height:2px;
ハンバーガーボタンの線の太さです。値を大きくすると線が太くなります。
background:rgba(15,23,42,.35);
ドロワーメニュー表示中の半透明背景です。.35を大きくすると背景が濃くなり、小さくすると薄くなります。
width:320px;
ドロワーメニューの横幅です。値を大きくするとメニューが横に広がり、小さくするとコンパクトになります。
max-width:85%;
ドロワーメニューが画面幅に対して占める最大幅です。狭い画面でドロワーメニューが画面内へ収まるようにしています。
padding:32px 24px;
ドロワーメニューの内側余白です。上下の32pxと左右の24pxを変更すると、メニュー内容と画面端との間隔を調整できます。
transform:translateX(calc(-100% - 40px));
閉じている状態のドロワーメニューを画面左側へ隠す位置です。40pxを大きくすると、さらに左側へ移動します。
transition:transform .3s ease, visibility .3s ease;
ドロワーメニューを開閉する時間です。.3sを大きくするとゆっくり、小さくすると速く切り替わります。
gap:10px;
ドロワーメニュー内の各メニュー項目の間隔です。値を大きくすると項目同士の間隔が広がります。
padding:14px 16px;
各メニューリンクの内側余白です。上下の14pxを大きくすると項目の高さが増え、左右の16pxを大きくすると文字と端の間隔が広がります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssではサンプル表示エリアへwidth:100%とmax-width:700pxを設定し、ドロワーメニューにはwidth:320pxとmax-width:85%を設定しています。画面が狭い場合はドロワーメニューの横幅が自動的に縮小されます。
画面幅640px以下では、サンプル表示エリアをpadding:24px 18px;、ドロワーメニューもpadding:24px 18px;へ変更して左右の余白を抑えています。スマートフォン・タブレット・PCの画面幅に合わせてハンバーガーボタンとドロワーメニューを利用できます。
コメント