JavaScriptとCSSで簡単に実装できるグローバルナビゲーションのメガメニュー
ナビゲーションバーにメガメニューを追加すると、多くの情報を整理して表示することができます。
特に、eコマースサイトや企業のウェブサイトでは、
複数のカテゴリやアイテムをコンパクトに表示できるメガメニューがよく使用されます。
この記事では、JavaScriptとCSSを使って、シンプルで機能的なメガメニューを作成する方法を解説します。
メガメニューがグローバルナビゲーションの全体に表示されるようにカスタマイズする手順も紹介します。
メガメニューとは?
メガメニューは、ナビゲーションメニューの1つであり、ユーザーが特定のメニュー項目にカーソルを合わせると、サブメニューが大きく表示される仕組みです。
一般的なドロップダウンメニューとは異なり、
複数のカテゴリやリンクが整理されて表示されるのが特徴です。
サンプルコードの概要
このセクションでは、シンプルなメガメニューの実装方法を説明します。
メニュー項目にホバーすると、ナビゲーションバー全体にメガメニューが表示され、
カテゴリごとにリンクを整理して表示します。
メガメニューの実装
まず、基本的なHTMLとCSS、そしてJavaScriptを使ってメガメニューを構築します。
HTML
HTMLでは、グローバルナビゲーションの基本構造を作ります。<ul>
タグでメニューのリストを定義し、各メニューアイテムにサブメニュー(メガメニュー)を追加します。
<nav class="global-nav">
<ul>
<li class="menu-item">
<a href="#">メニュー1</a>
<div class="mega-menu">
<div class="menu-column">
<h3>カテゴリー1</h3>
<ul>
<li><a href="#">サブメニュー1-1</a></li>
<li><a href="#">サブメニュー1-2</a></li>
<li><a href="#">サブメニュー1-3</a></li>
</ul>
</div>
<div class="menu-column">
<h3>カテゴリー2</h3>
<ul>
<li><a href="#">サブメニュー2-1</a></li>
<li><a href="#">サブメニュー2-2</a></li>
<li><a href="#">サブメニュー2-3</a></li>
</ul>
</div>
</div>
</li>
<li class="menu-item"><a href="#">メニュー2</a></li>
<li class="menu-item"><a href="#">メニュー3</a></li>
</ul>
</nav>
CSS
次に、CSSを使ってメガメニューのスタイルを定義します。
デフォルトではメガメニューは非表示にしておき、ホバー時に表示されるようにします。
また、メガメニューがナビゲーション全体に広がるようにwidth: 100%
を設定しています。
.global-nav {
background-color: #333;
}
.global-nav ul {
list-style: none;
display: flex;
justify-content: space-around;
padding: 10px;
}
.global-nav a {
color: white;
text-decoration: none;
padding: 10px 20px;
}
.menu-item {
position: relative;
}
.mega-menu {
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%; /* ナビゲーション全体にメガメニューを広げる */
background-color: #fff;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
z-index: 1000;
padding: 20px;
}
.menu-column {
width: 25%; /* カラム幅の調整 */
float: left;
padding: 10px;
}
.mega-menu a {
color: #333;
padding: 5px 0;
display: block;
}
.mega-menu a:hover {
color: #007bff;
}
.mega-menu::after {
content: "";
display: table;
clear: both;
}
JavaScript
JavaScriptでは、メニュー項目にホバーした際にメガメニューが表示される仕組みを作ります。mouseover
イベントでメガメニューを表示し、mouseout
イベントでメガメニューを非表示にします。
document.querySelectorAll('.menu-item').forEach(item => {
item.addEventListener('mouseover', () => {
const megaMenu = item.querySelector('.mega-menu');
if (megaMenu) {
megaMenu.style.display = 'block';
}
});
item.addEventListener('mouseout', () => {
const megaMenu = item.querySelector('.mega-menu');
if (megaMenu) {
megaMenu.style.display = 'none';
}
});
});
カスタマイズ方法
メガメニューの幅を調整
今回のサンプルでは、メガメニュー全体がナビゲーションに広がるようにwidth: 100%
を設定していますが、特定の幅に固定したい場合はwidth
を調整します。
また、カラム数やカラム幅もmenu-column
のwidth
プロパティを変更することでカスタマイズ可能です。
.menu-column {
width: 33.33%; /* 3カラム表示に変更 */
}
メニューのスタイルを改善
メニューのデザインやホバースタイルをカスタマイズするには、a:hover
などのCSSセレクタを利用します。
また、メニューにアイコンを追加したり、背景画像を入れたい場合もCSSで追加できます。
まとめ
今回の記事では、JavaScriptとCSSを使って、
シンプルなグローバルナビゲーションのメガメニューを作成する方法を解説しました。
このメガメニューは、ナビゲーションバー全体に広がるため、
多くの情報を整理して表示する際に非常に便利です。
メガメニューの実装は、視覚的なナビゲーションを提供するための重要なテクニックですので、
自分のサイトに合ったカスタマイズを行ってみてください。
【完全解説】パララックス背景 × 中身だけ切り替わるスクロール演出の作り方
7月 6, 2025チェックボックスで入力欄を無効化!フォーム体験をスマートにする小技
7月 3, 2025Swiperの設定でスライド枚数が何枚でも動作するようにする方法
6月 12, 2025