CSS + jQueryハンバーガメニュー実装方法
ハンバーガーメニューは、モバイルフレンドリーなウェブデザインの一環として、重要な要素となっています。
この記事では、CSSとjQueryを使用して、簡単かつ効果的にハンバーガーメニューを実装する方法に焦点を当てます。
先に解答例
See the Pen css+jquery hamburger-menu by hide (@hide225) on CodePen.
HTMLの構造を設定する
ハンバーガーメニューは、通常、スマートフォンやタブレットなどの小型デバイスでウェブサイトのナビゲーションを効果的にまとめるためのアイコンです。通常は三本の水平バーから成り、クリックまたはタップすることでメニューが表示されます。
ハンバーガーアイコンは大枠にmenu-iconクラスを付けそれぞれの水平バーにbarクラスを付けています。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<title>Hamburger Menu</title>
</head>
<body>
<header class="header">
<div class="menu-icon" id="menuIcon">
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</div>
<ul class="nav-list" id="navList">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</header>
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script src="script.js"></script>
</body>
</html>
スタイルを設定する
CSSの詳細には触れませんが、メニューの状態をクラスの付け外しで管理する為、
メニュー、アイコンそれぞれに.activeクラスを付与しています。
body {
margin: 0;
font-family: 'Arial', sans-serif;
box-sizing: border-box;
}
.header {
background-color: #333;
padding: 15px;
display: flex;
align-items: center;
height: 60px;
}
.menu-icon {
cursor: pointer;
display: none;
position: fixed;
height: 27px;
width: 25px;
top: 15px;
left: 15px;
z-index: 100;
}
.bar {
background-color: #fff;
height: 3px;
width: 25px;
position: absolute;
transition: all ease 0.3s;
}
.bar:nth-child(1) {
top: 0;
}
.bar:nth-child(2) {
top: 50%;
transform: translateY(-50%);
}
.bar:nth-child(3) {
bottom: 0;
}
.bar:nth-child(1).active { // activeクラスがついているとき
transform: translateY(-50%) rotate(45deg);
top: 50%;
}
.bar:nth-child(2).active { // activeクラスがついているとき
opacity: 0;
}
.bar:nth-child(3).active { // activeクラスがついているとき
transform: translateY(-50%) rotate(-45deg);
top: 50%;
}
.nav-list {
list-style: none;
display: flex;
gap: 20px;
}
.nav-list a {
text-decoration: none;
color: #fff;
font-weight: bold;
transition: all ease .3s;
}
.nav-list a:hover {
opacity: 0.6;
}
@media (max-width: 768px) {
.header {
height: 30px;
}
.menu-icon {
display: flex;
}
.nav-list {
display: none;
flex-direction: column;
position: absolute;
top: 40px;
left: 0;
width: 100%;
background-color: #333;
padding: 15px;
}
.nav-list.active { // activeクラスがついているとき
display: block;
}
.nav-list li {
margin-right: 0;
margin-bottom: 10px;
}
}
これで、ハンバーガーメニューを実装する準備が整いました。
最後にjQueryを実装して終わりたいと思います。
jQueryの導入
jQueryを導入しましょう。
今回は下記CDNからjQueryを取得してHTMLファイルに組み込んでいきます。
</body>タグの手前に下記コードを貼り付けてください。
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
これでjQueryを使用する準備ができました。
メニューのトグル機能
toggleClassを使用することで、クラスの追加と削除を切り替えることができます。
$(document).ready(function () {
$("#menuIcon").click(function () { // メニューアイコンクリック時
$("#navList").toggleClass("active"); // .activeの付け外し
$(".bar").toggleClass("active");
});
});
これによりハンバーガーメニューの実装をすることができました。閲覧ありがとうございました。
関連記事
-
HTMLとCSSだけ!ドロップダウンメニューの実装方法
ウェブサイトのナビゲーションメニューは重要な要素の一つです。この ...
-
CSSだけで!スムーススクロールの実装方法
今回は、初心者の方に向けて、jQueryを使わずにシンプルなスム ...
-
初心者向け!jQueryを使った簡単なタブメニューの作り方
この記事では、jQueryを使用して簡単に実装できるタブメニュー ...
-
jqueryは不要!アコーディオン実装方法
今回は、初心者の方に向けて、jQueryを使わずにシンプルなアコ ...
-
jQueryで簡単に実装!モーダルの作り方
今回はシンプルで効果的なモーダルを作成する方法を紹介します。モー ...
-
サイトを魅力的に!Wow.jsで簡単アニメーションの追加
この記事では、Wow.jsを使用してウェブサイトにアニメーション ...