ハンバーガーメニューから始めるjQuery

WEB制作基礎知識

スマホサイトにハンバーガーメニューを実装しよう!

スマホサイトを作った際にハンバーガーメニューによるメニュー表示の動作は欠かせません。
jQueryの使い方をスマホメニューの作り方から学んでいきましょう。

次のような動きのメニューを作成できます。

まずはメニューを作成する

次のような構成でスマホ用のメニューを作成してください。

最初のファイルとして以下ソースを利用しても良いです。(空のHTMLです)

制作しているサイトに次のようなコードを差し込みます。

HTML

<header class="header">
<div class="header-top">
<h1 class="sitelogo">サイトロゴ</h1>
<button class="button open">open</button>
</div>
<div class="sp-menu">
<div class="header-top-close">
<h1 class="sitelogo">サイトロゴ</h1>
<button class="button close">close</button>
</div>
<nav class="gnav">
<ul class="gnav-list">
<li class="gnav-list-item">
<a href="#">メニュー</a></li>
<li class="gnav-list-item"><a href="#">メニュー</a></li>
<li class="gnav-list-item"><a href="#">メニュー</a></li>
<li class="gnav-list-item"><a href="#">メニュー</a></li>
<li class="gnav-list-item"><a href="#">メニュー</a></li>
</ul>
</nav>
</div>
</header>
<main>
<p>
ここに内容が入ります
</p>
</main>
<footer class="footer">
xxxx
</footer>

CSS

/* reset */
body,ul{
padding:0;
margin:0;
}
li{
list-style-type:none;
}
button{
border:none;
}
h1{
padding:0;
margin:0;
}

/* 全体のレイアウト スタイル指定 */
.header-top,.header-top-close{
display:flex;
justify-content: space-between;
background:#ccc;
align-items:center;
padding:10px;
}
.button{
width:40px;
height:40px;
background:#666;
border-radius:10px;
color:#fff;
cursor: pointer;
}
.header-top-close{
background:#78cac4;
}
.gnav-list{
background: #808080a3;
color:#fff;
}
.gnav-list-item a{
padding: 20px 10px;
text-decoration: none;
display:block;
color:#fff;
}
.footer{
background:#ccc;
padding:20px;
text-align:center;
}

/* メニューを固定配置にする */
.sp-menu{
position:fixed;
top:0;
left:0;
width:100%; /* fixedで幅が狭くなるので追加 */
}

/* 以下は ※レイアウトを作り終わってから追加すること! */

/* スマホメニューを初期状態で隠す */
.sp-menu{
transform:translateX(100%); 
transition:1s; /* これがないとアニメーションにならない */
}

/* クリックされた際の状態(.activeのつけ外しによりアニメーションが動く)*/
.sp-menu.active{
transform:translateX(0); 
}

構造としてはスマホ用のメニューをレイアウトし、それが「position:fixed;」で上に載っている状態です。

スマホメニューは「.sp-menu」であり、初期状態は隠しておきます。
「.active」を追加するとアニメーションが発動し、見えるようになります。

JavaScriptを記載する

上記ではボタンを押しても動かないので、ボタンをおしたら「.sp-menu」に「.active」を追加するというスクリプトを書いてみましょう。

まずはjQueryのCDNを読み込みましょう。
一番上にある「基礎ファイル」でやる場合はすでに読み込んでいるため作業は必要ありません。

 <script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
crossorigin="anonymous"></script>

次にスクリプトを追記しましょう。
記述は

$(function(){

});

の中に記載しないと動作しないことがあります。

 

 $(".button.open,.button.close").click(function(){
$(".sp-menu").toggleClass("active");
});

こちらでボタンを押した場合に動作するはずです。
ボタンは2箇所ありますので、ボタン2箇所のclassを記載します。

さらに、ページ内リンクの場合メニューが開きっぱなしになってしまい邪魔なので、次の記述を追記します。

 //ページ内リンクの場合メニューが邪魔になるので
//ナビの中身をクリックしたら隠すように指定
$(".gnav-list-item a").click(function(){
$(".sp-menu").toggleClass("active");
});

これで完成です。

完成ファイルは以下です。

おつかれさまでした!

タイトルとURLをコピーしました