今回は、jQueryを使ったハンバーガーメニューの実装方法について解説します。
ハンバーガーメニューは、スマートフォンやタブレットなどの小さい画面で、ナビゲーションメニューをコンパクトに表示するための便利な方法です。
この記事では、jQueryを使用して、簡単にハンバーガーメニューを作成する方法を紹介します。また、CSSアニメーションを使用して、メニューリストをスライドダウンさせ、見栄えを良くします。
初心者でも理解しやすいように、コードの解説も行いますので、ぜひ最後まで読んでチャンレジしてみてください!
サンプル
HTML
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ハンバーガーメニュー</title>
<link rel="stylesheet" href="styles.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="scripts.js"></script>
</head>
<body>
<header>
<nav>
<div class="hamburger">
<span></span>
<span></span>
<span></span>
</div>
<ul class="menu">
<li><a href="#">ホーム</a></li>
<li><a href="#">サービス</a></li>
<li><a href="#">プロジェクト</a></li>
<li><a href="#">お問い合わせ</a></li>
<li><a href="#" class="close-menu">閉じる</a></li>
</ul>
</nav>
</header>
<!-- その他のコンテンツ -->
</body>
</html>
CSS
/* ページ全体にマージンを設定 */
body {
margin: 0;
font-family: Arial, sans-serif;
}
/* ヘッダーの背景色を設定 */
header {
background-color: #333;
position: relative;
}
/* ナビゲーションを横並びに配置 */
nav {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
}
/* ハンバーガーアイコンのカーソルスタイルを変更 */
.hamburger {
cursor: pointer;
}
/* ハンバーガーアイコンの各バーのスタイルを設定 */
.hamburger span {
display: block;
background-color: #fff;
height: 2px;
width: 25px;
margin: 4px;
transition: all 0.3s ease-in-out;
}
/* ハンバーガーアイコンがオープンした場合のスタイルを設定 */
.hamburger.open span:nth-child(1) {
transform: rotate(45deg) translate(5px, 5px);
}
.hamburger.open span:nth-child(2) {
opacity: 0;
}
.hamburger.open span:nth-child(3) {
transform: rotate(-45deg) translate(3px, -4px);
}
/* メニューリストのスタイルを設定 */
.menu {
list-style: none;
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%;
background-color: #333;
flex-direction: column;
padding: 0;
margin: 0;
}
/* メニューリストの各項目のスタイルを設定 */
.menu li {
padding: 1rem 0;
margin: 0;
}
/* メニューリストの各項目内のアンカータグのスタイルを設定 */
.menu li a {
display: block;
padding: 0;
text-align: center;
color: #fff;
text-decoration: none;
margin: 0;
}
/* 閉じるボタンのスタイルを設定 */
.close-menu {
margin-top: auto;
padding: 1rem 0;
border-top: 1px solid #fff;
}
/* メニューリストがアクティブな場合のスタイルを設定 */
.menu.active {
display: flex;
animation: slide-down 0.3s ease-in-out forwards;
}
/* メニューリストをスライドダウンさせるアニメーションを定義 */
@keyframes slide-down {
from {
transform: translateY(-50%);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
このCSSは、ハンバーガーメニューの実装で使用されるスタイルの一部を定義しています。
まず、body要素に対してマージンを設定し、フォントファミリーをArialとsans-serifに設定します。次に、header要素に背景色を設定し、相対的な位置を指定します。
nav要素には、display: flexを使用して、子要素を横並びに配置します。justify-content: space-betweenを使用することで、子要素間にスペースを挿入し、両端に子要素を配置します。align-items: centerを使用して、子要素を縦方向に中央揃えにします。
.hamburgerクラスは、カーソルスタイルを変更するために使用されます。.hamburger spanは、ハンバーガーアイコンの各バーのスタイルを定義します。display: blockを使用して、各バーを縦に配置し、高さと幅を指定します。marginを使用して、各バーの間にスペースを挿入します。transitionを使用して、各バーにアニメーションを追加します。
.hamburger.open span:nth-child(1)、.hamburger.open span:nth-child(2)、.hamburger.open span:nth-child(3)は、ハンバーガーアイコンがオープンした場合の各バーのスタイルを定義します。
.menuクラスは、メニューリストのスタイルを設定します。list-style: noneを使用して、リストマーカーを非表示にします。display: noneを使用して、メニューリストを非表示にします。position: absoluteを使用して、要素を絶対的な位置に配置します。topとleftを使用して、要素をページの上部に配置します。widthを使用して、要素の幅を100%に設定します。flex-direction: columnを使用して、子要素を縦方向に配置します。
.menu liクラスは、メニューリストの各項目のスタイルを設定します。paddingを使用して、各項目の上下にスペースを挿入します。
.menu li aクラスは、メニューリストの各項目内のアンカータグのスタイルを設定します。display: blockを使用して、アンカータグをブロックレベル要素に変換します。colorを使用して、テキストの色を指定します。text-decorationを使用して、下線を非表示にします。
.close-menuクラスは、閉じるボタンのスタイルを設定します。margin-topを使用して、閉じるボタンの上部にスペースを挿入します。paddingを使用して、閉じるボタンの上下にスペースを挿入します。border-topを使用して、上部に1pxの罫線を追加します。
.menu.activeクラスは、メニューリストがアクティブな場合のスタイルを設定します。display: flexを使用して、要素を表示します。animationを使用して、スライドダウンするアニメーションを追加します。
最後に、@keyframesルールを使用して、slide-downアニメーションを定義します。このアニメーションは、メニューリストをスライドダウンさせるために使用されます。fromとtoキーワードを使用して、アニメーションの開始と終了のスタイルを指定します。transformを使用して、要素を移動します。opacityを使用して、要素の透明度を変更します。これにより、メニューリストがスムーズに表示され、ユーザーがナビゲーションを行うことができます。
javascript
// メニューを閉じる関数を定義
function closeMenu() {
// メニューのアクティブクラスを削除
$('.menu').removeClass('active');
// ハンバーガーアイコンのopenクラスを削除
$('.hamburger').removeClass('open');
}
// 閉じるボタンをクリックしたときの処理を定義
$('.close-menu').on('click', function() {
// メニューを閉じる関数を呼び出し
closeMenu();
});
// メニュー項目をクリックしたときの処理を定義
$('.menu li a').on('click', function() {
// メニューを閉じる関数を呼び出し
closeMenu();
});
このコードは、jQueryを使用してハンバーガーメニューを作成する際に使用されるコードの一部です。ここでは、メニューを閉じるための関数を定義し、閉じるボタンとメニュー項目がクリックされたときに呼び出します。
まず、function closeMenu()という名前の関数を定義します。この関数は、メニューを閉じるための処理を実行します。具体的には、.menuと.hamburgerクラスから、それぞれの要素のアクティブクラスとopenクラスを削除します。
次に、閉じるボタンの要素にクリックイベントを追加します。これは、.close-menuクラスの要素を選択して、それがクリックされたときにcloseMenu()関数を呼び出すことを意味します。これにより、閉じるボタンがクリックされた場合、メニューが閉じられます。
同様に、メニュー項目の要素にもクリックイベントを追加します。これは、.menu li aクラスの要素を選択して、それがクリックされたときにcloseMenu()関数を呼び出すことを意味します。これにより、メニュー項目がクリックされた場合、メニューが閉じられます。
このように、ハンバーガーメニューの実装では、閉じるボタンとメニュー項目がクリックされたときにメニューを閉じる関数を呼び出すことが重要です。これにより、ユーザーがスムーズにナビゲーションを行うことができます。
まとめ
以上で、jQueryを使ったハンバーガーメニューの実装方法について解説しました。
ハンバーガーメニューは、スマートフォンやタブレットなどの小さい画面で、ナビゲーションメニューをコンパクトに表示するための便利な方法です。
この記事では、jQueryとCSSアニメーションを使用して、簡単にハンバーガーメニューを作成する方法を紹介しました。
初心者でも理解しやすいように、コードの解説を行いましたので、ぜひ実際にコードを書いて試してみてください。
ハンバーガーメニューを実装することで、ユーザーがスマートフォンやタブレットでサイトを閲覧した際に、スペースを節約し、使いやすいナビゲーションメニューを提供することができます。