こんにちは。
レスポンシブでjQueryとCSSをつかって、
デバイスの幅が大きい時はメニューを上部固定、
デバイスの幅が小さいときのみハンバーガーアイコンを表示してメニューに切り替えるものをサイトに実装したのですが、
リンク先がページ内リンクのため、<ul>内部のメニューをクリックしても開いたハンバーガーメニューがうっとおしくなってしまいます。
リンク先をクリックしたときも、ハンバーガーメニューを閉じる機能を実装したいのですが、ご教授いただけますでしょうか?
よろしくお願いいたします。
HTML
1<div id="wrapper"> 2 3<!--メニュー--> 4 <div id="nav-wrapper"> 5 <p class="btn-gnavi"> <span></span> <span></span> <span></span> </p> 6 <nav id="global-navi"> 7 <ul class="menu"> 8 <li><a href="#menu01">更新履歴</a></li> 9 <li><a href="#menu02">当サイトについて</a></li> 10 <li><a href="#menu03">作品集</a></li> 11 <li><a href="#menu04">お問い合わせ</a></li> 12 </ul> 13 </nav> 14 </div> 15 <!--メニュー--> 16 17<h1 id="menu01">更新履歴</h1> 18~略~ 19<h1 id="menu02">当サイトについて</h1> 20~略~ 21<h1 id="menu03">作品集</h1> 22~略~ 23<h1 id="menu04">お問い合わせ</h1> 24 25</div>
jQuery
1$(function(){ 2 $(".btn-gnavi").on("click", function(){ 3 // ハンバーガーメニューの位置を設定するための変数 4 var rightVal = 0; 5 if($(this).hasClass("open")) { 6 // 「open」クラスを持つ要素はメニューを開いた状態に設定 7 rightVal = -300; 8 // メニューを開いたら次回クリック時は閉じた状態になるよう設定 9 $(this).removeClass("open"); 10 } else { 11 // 「open」クラスを持たない要素はメニューを閉じた状態に設定 (rightVal は0の状態 ) 12 // メニューを開いたら次回クリック時は閉じた状態になるよう設定 13 $(this).addClass("open"); 14 } 15 16 $("#global-navi").stop().animate({ 17 right: rightVal 18 }, 200); 19 }); 20});
CSS
1#global-navi { 2 background: #333333eb; 3 position: fixed; 4 top: 0; 5 right: 0px; 6 width: 100%; 7 font-weight: bold; 8} 9 10#nav-wrapper nav ul li{display:inline-block;font-size: 16px;padding: 10px 20px;} 11#nav-wrapper nav ul li a{ 12color: #ddd 13} 14 15@media screen and (max-width: 600px) { 16 17#nav-wrapper nav { 18 position: fixed; 19 top: 0; 20 right: -300px; 21 width: 250px; 22 height: 100%; 23 padding-top: 50px; 24 background:#333333eb; 25 font-size: 16px; 26 box-sizing: border-box; 27 z-index: 2 28} 29#nav-wrapper nav ul li { 30 display:block; 31 padding: 20px 28px; 32 font-weight: bold; 33} 34 35#nav-wrapper nav ul li a { 36 text-decoration: none; 37 color: #ddd 38} 39 40#nav-wrapper .btn-gnavi { 41 position: fixed; 42 top: 5px; 43 right: 20px; 44 width: 30px; 45 height: 24px; 46 z-index: 3; 47 box-sizing: border-box; 48 cursor: pointer; 49 -webkit-transition: all 400ms; 50 transition: all 400ms; 51} 52 53#nav-wrapper .btn-gnavi span { 54 position: absolute; 55 width: 30px; 56 height: 4px; 57 background: #222; 58 border-radius: 10px; 59 -webkit-transition: all 400ms; 60 transition: all 400ms 61} 62 63#nav-wrapper .btn-gnavi span:nth-child(1) { 64 top: 0 65} 66 67#nav-wrapper .btn-gnavi span:nth-child(2) { 68 top: 10px 69} 70 71#nav-wrapper .btn-gnavi span:nth-child(3) { 72 top: 20px 73} 74 75#nav-wrapper .btn-gnavi.open { 76 -webkit-transform: rotate(180deg); 77 transform: rotate(180deg) 78} 79 80#nav-wrapper .btn-gnavi.open span { 81 background: #fff 82} 83 84 85#nav-wrapper .contents section p { 86 position: absolute; 87 top: 50%; 88 width: 30%; 89 line-height: 1.4; 90 font-size: 20px; 91 color: #fff; 92 text-shadow: 0 0 6px #222; 93} 94 95}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/18 00:07