【ハンバーガーメニュー】ページ内リンクをクリックで、メニューを閉じたい
実現したいこと:
ハンバーガーメニュー内の各項目をクリックすると、ハンバーガーメニューが閉じるようにしたいです。
現状:
ページ内リンクを設定している箇所(PROFILE)だけ、クリックしてもハンバーガーメニューが閉じません。
同様の質問を参考に試してみましたが、実現できませんでした。
質問:
jsの
①どの箇所に
②どのような記述を
すれば、上記の動作が可能になるでしょうか。
サイト作成自体が初めてのため粗が多いのですが、お教えいただければ幸いです。
該当のソースコード
HTML
1 <div class="hamburger"><!-- ハンバーガーの3本線--> 2 <span></span> 3 <span></span> 4 <span></span> 5 </div> 6 <nav class="globalMenuSp"><!-- ハンバーガー内のナビ--> 7 <ul class="nav-wrap"> 8 <li class="li-works">WORKS</li> 9 <ul class="works-wrap"><!-- WORKS子カテゴリ --> 10 <li><a href="">WEB CONTENTS</a></li> 11 <li><a href="">FLYER</a></li> 12 <li><a href="">WRITING</a></li> 13 </ul> 14 <li class="li-profile"><a href="#profile">PROFILE</a></li> 15 <li class="li-top"><a href="">TOP</a></li> 16 </ul> 17 </nav>
CSS
1/*ここからハンバーガーボタン*/ 2.hamburger { /*ボタンのベース*/ 3 display: block; 4 position: absolute; 5 width: 42px; 6 height: 42px; 7 z-index: 3; 8 cursor: pointer; 9} 10 11.hamburger span { /*ボタンの3本線*/ 12 display: block; 13 position: absolute; 14 width : 30px; 15 height: 1px; 16 left : 6px; 17 background: #fff; 18 transition: 0.3s ease-in-out; 19} 20 21.hamburger span:nth-child(1) {top: 10px;}/* hamburger中の1番目の <span> 要素をtopから10px */ 22.hamburger span:nth-child(2) {top: 20px;} 23.hamburger span:nth-child(3) {top: 30px;} 24 25/* ナビ開いている時のボタン */ 26.hamburger.active span:nth-child(1){ 27 background: #fff; 28 top: 16px; 29 left: 6px; 30 transform: rotate(-45deg); 31} 32.hamburger.active span:nth-child(2), 33.hamburger.active span:nth-child(3) { 34 background: #fff; 35 top: 16px; 36 transform: rotate(45deg); 37} 38 39/* 70pxスクロールを起点に、このクラスをjQueryで付与・削除する */ 40.hamburger.change-color span { 41 background: #222; 42}/*ここまでハンバーガーボタン*/ 43 44/*ここからnav*/ 45nav.globalMenuSp { 46 position: fixed; 47 z-index : 2; 48 top : 0; 49 left : 0; 50 text-align: center; 51 transform: translateX(100%); 52 transition: all 0.6s; 53 width: 100%; 54 height: 100vh; 55} 56 57nav.globalMenuSp .nav-wrap { 58 background: rgba(30,30,30,0.95); 59 margin: 0; 60 padding: 0; 61 width: 100%; 62 height: 100vh; 63 display: -webkit-box; 64 display: -ms-flexbox; 65 display: flex; /* 要素をflexboxに対応させる */ 66 align-items: center; /* 縦方向の中央揃え */ 67 justify-content: center; /* 横方向の中央揃え */ 68 flex-direction: column; /* 子要素の並びを上から下にする(要素の改行に対応) */ 69} 70 71/* このクラスを、jQueryで付与・削除する */ 72nav.globalMenuSp.active { 73 transform: translateX(0%); 74}
jQuery
1$(function() { 2 $('.hamburger').click(function() { 3 $(this).toggleClass('active'); 4 5 if ($(this).hasClass('active')) { 6 $('.globalMenuSp').addClass('active'); 7 } else { 8 $('.globalMenuSp').removeClass('active'); 9 } 10 }); 11});
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。