モバイルではハンバーガーメニュー、PCではナビゲーションメニュー
目次
ハンバーガーメニューDEMO
まずは実装内容を確認しましょう、DEMOページをご覧ください。
コピペ用実装コード
index.html
style.css
script.js
を作成し、以下のコードを貼り付けてください。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>ハンバーガーメニュー</title>
<link rel="stylesheet" href="style.css">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div class="hamburger">
<div class="logo">LOGO</div>
<p class="btn-gNav">
<span></span>
<span></span>
<span></span>
</p>
<nav class="gNav">
<ul class="gNav-menu">
<li><a href="#">ホーム</a></li>
<li><a href="#">会社概要</a></li>
<li><a href="#">事業紹介</a></li>
<li><a href="#">採用情報</a></li>
<li><a href="#">お問い合わせ</a></li>
</ul>
</nav>
</div>
</body>
</html>
@charset "utf-8";
body {
color: #ffffff;
background: url(https://www.solluna.blog/wp-content/uploads/2023/03/bg-businessman.jpg) no-repeat top #000000;
}
ol,
ul {
list-style: none;
list-style-type: none;
}
a {
text-decoration: none;
color: #ffffff;
font-size: 20px;
letter-spacing: 0.1em;
}
.hamburger {
margin: 20px auto 0;
width: 100%;
max-width: 900px;
display: flex;
justify-content: space-between;
}
.logo {
font-size: 40px;
font-weight: 700;
}
.hamburger .btn-gNav {
position: fixed;
top: 20px;
right: 20px;
width: 30px;
height: 24px;
z-index: 12;
box-sizing: border-box;
cursor: pointer;
-webkit-transition: all 400ms;
transition: all 400ms;
}
.hamburger .btn-gNav span {
position: absolute;
width: 100%;
height: 4px;
background: #ffffff;
border-radius: 10px;
-webkit-transition: all 400ms;
transition: all 400ms;
}
.hamburger .btn-gNav span:nth-child(1) {
top: 0;
}
.hamburger .btn-gNav span:nth-child(2) {
top: 10px;
}
.hamburger .btn-gNav span:nth-child(3) {
top: 20px;
}
.hamburger .btn-gNav.open span:nth-child(1) {
background: #ffffff;
top: 6px;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.hamburger .btn-gNav.open span:nth-child(2),
.hamburger .btn-gNav.open span:nth-child(3) {
top: 6px;
background: #ffffff;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
transform: rotate(45deg);
}
.btn-gNav {
display: none;
}
.gNav .gNav-menu {
display: flex;
justify-content: space-between;
}
.gNav .gNav-menu li {
margin: 0 auto;
padding: 0 5px;
}
@media screen and (max-width: 600px) {
.btn-gNav {
display: block;
}
.gNav {
position: fixed;
top: 0;
right: -100%;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
font-size: 16px;
box-sizing: border-box;
z-index: 1;
padding-top: 50px;
transition: .3s;
}
.gNav.open {
right: 0;
}
.gNav .gNav-menu {
padding: 0;
width: 100%;
height: 100%;
display: block;
flex-direction: column;
text-align: center;
/*justify-content: center;*/
}
.gNav .gNav-menu li {
width: 86%;
padding: 15px;
border-bottom: #525252 1px solid;
}
}
$(function () {
$('.btn-gNav').on("click", function () {
$('.gNav').toggleClass('open'); // メニューにopenクラスをつけ外しする
});
});
実装方法
See the Pen ハンバーガーメニュー by SOLLUNA (@ygi) on CodePen.
HTML
headタグの中にCSSを読み込みます。
<link rel="stylesheet" href="css/style.css">
headタグの中にjQueryを読み込むためのCDNリンクを追加します。
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
headタグの中にJSを読み込みます。
<script src="js/script.js"></script>
CSS
メニューリストを画面外に表示させておいてクリックすると現れる構造です。
上から表示する場合は.gNav
のright
を0に変更し.gNav
のtop
を-100%変更.gNav .open
にtop
を追加し0にします。上から表示DEMOページ
.gNav {
position: fixed;
top: 0;
right: -100%;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
font-size: 16px;
box-sizing: border-box;
z-index: 1;
padding-top: 50px;
transition: .3s;
}
.gNav.open {
right: 0;
}
JS
toggleClassメソッド
指定されたクラス名が要素に既に存在する場合はクラスを削除し、存在しない場合はクラスを追加します。また、2つ目の引数を使用して、クラスが存在する場合には削除するかどうかを指定することもできます。
$(function () {
$('.btn-gNav').on("click", function () {
$('.gNav').toggleClass('open'); // メニューにopenクラスをつけ外しする
});
});
ハンバーガーメニューは多くのWebサイトがUIをシンプルにする為に取り入れていますが最近では、ユーザーが必要な情報を見つけやすくするために、隠れたメニューに頼りすぎることが問題視されることもあります。