前提・実現したいこと
画面幅900px以下でハンバーガーメニューが表示されるように設定しています。
発生している問題・エラーメッセージ
問題は2つで、1つはハンガーメニューのaボタンを押してから、901px以上に画面幅を広げるとnav-wrapperが消えてしまい、リロードしないと再表示されないことです。 2目は、901px以上の時にaボタンを押し、リロードせずにハンバーガメニューに切り替わると、ページ内リンクはできるのですがnav-wrapperが消えなくなってしまうことです。 この問題を解消したいです。何卒よろしくお願いいたします。
該当のソースコード
HTML
1 <header> 2 <div class="header-inner"> 3 <h1><a href="">title</a></h1> 4 <div class="nav-wrapper"> 5 <nav class="header-nav"> 6 <ul class="nav-ul"> 7 <li class="header-list"><a href="#">About</a></li> 8 <li class="header-list"><a href="#work">Work</a></li> 9 <li class="header-list"><a href="">Contact</a></li> 10 </ul> 11 </nav> 12 </div> 13 14 <div class="nav-btn"> 15 <span class="btn btn-top"></span> 16 <span class="btn btn-mid"></span> 17 <span class="btn btn-bottom"></span> 18 </div> 19 </div> 20 </header>
CSS
1 2body.noscroll{ 3 overflow: hidden; 4} 5 6header, footer{ 7 background-color: #1D3FA4; 8 color: white; 9} 10 11header { 12 width: 100%; 13 position: fixed; 14 top: 0; 15 left: 0; 16 z-index: 5; 17} 18 19.header-list { 20 font-size: 20px; 21} 22 23.header-inner { 24 display: flex; 25 justify-content: space-between; 26 align-items: center; 27 padding: 23px 70px; 28} 29.nav-ul { 30 width: 250px; 31 display: flex; 32 justify-content: space-between; 33 align-items: center; 34} 35 36.nav-btn { 37 display: none; 38} 39 40@media screen and (max-width:900px) { 41 /* ハンバーガメニュー */ 42.nav-btn { 43 display: block; 44 width: 43px; 45 height: 43px; 46 position: fixed; 47 z-index: 3; 48 top: 31px; 49 right: 22px; 50 border: none; 51 background-color: #1D3FA4; 52 cursor: pointer; 53} 54 55.btn { 56 width: 30px; 57 height: 2px; 58 display: block; 59 position: absolute; 60 left: 50%; 61 transform: translateX(-50%); 62 background-color: #fff; 63 border-radius: 5px; 64} 65 66.btn-top{ 67 top: 13px; 68} 69 70.btn-mid{ 71 top: 50%; 72} 73 74.btn-bottom{ 75 bottom: 10px; 76} 77 78.nav-btn.close .btn-top { 79 transform: translate(-50%,10px) rotate(45deg); 80 transition: transform .3s; 81} 82 83.nav-btn.close .btn-mid{ 84 opacity: 0; 85 transition: opacity .3s; 86} 87 88.nav-btn.close .btn-bottom{ 89transform: translate(-50%,-8px) rotate(-45deg); 90transition: transform .3s; 91} 92 93.nav-wrapper { 94 display: none; 95 width: 100vw; 96 height: 100vh; 97 position: fixed; 98 top: 0; 99 left: 0; 100 z-index: 2; 101} 102 103.header-nav { 104 width: 100%; 105 height: 100%; 106 background-color: #294BB0; 107 z-index: 2; 108} 109 110.header-nav, .nav-ul { 111 display: block; 112 position: absolute; 113 top: 50%; 114 left: 50%; 115 transform: translate(-50%,-50%); 116 text-align: center; 117} 118 119.header-nav, .header-list { 120 margin-right: 0; 121} 122 123.header-list { 124 margin: 70px 0; 125 font-size: 28px; 126} 127}
jquery
1$('.nav-btn').on('click', function () { 2 $('.nav-btn').toggleClass('close'); 3 $('.nav-wrapper').fadeToggle(300); 4 $('body').toggleClass('noscroll'); 5}); 6if( $(window).width() <= 900){ 7$('.header-list > a').on('click', function() { 8 $('.nav-wrapper').fadeOut(300); 9 $('.nav-btn').removeClass('close'); 10 $('body').removeClass('noscroll'); 11}); 12};
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/08 10:41