今回の記事ではハンバーガーメニューの作り方について解説します。
ハンバーガーメニューの実装は、JavaScriptはもちろん重要ですが、HTMLの構造やCSSの当て方も非常に重要になります。
WEB制作の場面では何かと実装する機会の多い機能になるので、これを機に理解を深めてみてください。
※実装のサンプルでは素のJavaSciptを使用しており、フレームワークは使用していません。
■ 関連記事 : JavaScriptの基礎習得に役立つ技術書【おすすめ3選】
作成イメージ
下記のCodePenで動作を確認いただけます。
仕様としては、メニューアイコンをクリックすると左端からメニューが出現し、
閉じるアイコンをクリックすると、メニューが閉じるというシンプルな仕様です。
See the Pen ハンバーガーメニュー by waibandl321 (@JumCode) on CodePen.
実装と解説
JavaScriptでのDOM操作は、HTMLの構造やCSSとの連携が非常に重要になりますので、
それぞれ解説をしていきます。
HTML
<div class="container">
<header>
<div class="header_inner">
<div class="logo">LOGO</div>
<div class="humb_icon"><img src="./menu.jpeg" alt="ハンバーガーメニュー アイコン"></div>
</div>
<div class="left_menu">
<div class="close_left_menu">
<img src="./close.jpeg" alt="ハンバーガーメニュー 閉じる">
</div>
<ul>
<li>メニュー1</li>
<li>メニュー2</li>
<li>メニュー3</li>
<li>メニュー4</li>
<li>メニュー5</li>
</ul>
</div>
</header>
<main>
<section>コンテンツ</section>
<section>コンテンツ</section>
<section>コンテンツ</section>
<section>コンテンツ</section>
</main>
</div>
ここで重要になるのは、左端から出現させるメニューをどこに配置するかです。
メニューのOPEN時には、position: fixed;で指定するのでどこでもいいと思われるかもしれませんが、
第三者が見た時に、一目で配置を確認できた方がいいです。
そのため、メニューアイコンをwrapしている要素と同階層に配置しました。
CSS
.humb_icon {
transition: 0.3s;
}
.humb_icon.hidden {
opacity: 0;
}
.close_left_menu {
position: absolute;
right: 20px;
}
.left_menu.open {
left: 0;
}
ここでは、表示非表示を切り替えるCSSの記述に焦点を当てて解説をします。
JavaScriptでDOM操作をする際には、基本的にCSSと連携させて処理を行います。
具体的には、JavaScriptで対象要素にclassを付与し、その際の表示切り替えのstyleを、CSSで準備しておきます。
上記のコードだと、.humb_icon.hiddenや.left_menu.openが該当します。
JavaScriptでstyle属性を指定する形で制御する場合もあるので、一概にどれが正しいとは言いにくいのですが、
CSSと連携させることで、カスタマイズ性は上がるように感じています。
JavaScript
const humb_icon = document.querySelector('.humb_icon');
const menu_close = document.querySelector('.close_left_menu');
const left_menu = document.querySelector('.left_menu');
humb_icon.addEventListener('click', () => {
left_menu.classList.add('open');
humb_icon.classList.add('hidden');
});
menu_close.addEventListener('click', () => {
left_menu.classList.remove('open');
humb_icon.classList.remove('hidden');
});
こちらは、DOM操作に必要な要素を定数で定義して、それらの要素のイベント毎に表示非表示を切り替えるclassをadd, removeしています。
ハンバーガーメニューの作成は、DOM操作の基礎を学ぶことができるので、
初心者の方は繰り返し作成にチャレンジしてみてください。
■ 関連記事 : JavaScriptの基礎習得に役立つ技術書【おすすめ3選】
コメント