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");
});
});
これによりハンバーガーメニューの実装をすることができました。閲覧ありがとうございました。
関連記事
-
jQueryで簡単に実装!モーダルの作り方
今回はシンプルで効果的なモーダルを作成する方法を紹介します。モー ...
-
jQueryを使って簡単にカウントダウンタイマーを実装しよう
jQueryを利用すると、わずかなコードで素敵なカウントダウンタ ...
-
WordPressのログイン画面をカスタマイズしよう!
WordPressのログイン画面をカスタマイズする方法を解説しま ...
-
jQueryを使用した簡単なローディング画面の実装方法
ウェブサイトやアプリケーションのユーザーエクスペリエンスを向上さ ...
-
jqueryは不要!アコーディオン実装方法
今回は、初心者の方に向けて、jQueryを使わずにシンプルなアコ ...
-
HTMLとCSSだけ!ドロップダウンメニューの実装方法
ウェブサイトのナビゲーションメニューは重要な要素の一つです。この ...