前提・実現したいこと
javascriptでハンバーガーメニューを実装しようとしています。
仕様としましては、
①ハンバーガーのボタンをクリックすると、
②画面いっぱいにメニューが表示される。
③メニュー内の「メニューを閉じる」をクリックすると、
④メニューが閉じる。
発生している問題・エラーメッセージ
実行結果は、ハンバーガーのボタンをクリックし、メニューを閉じるを押すとメニューが閉じるようになりました。
しかし、その動作は一回目だけで、一度メニューを閉じた後、ハンバーガーボタンをクリックしてもメニューが表示されなくなってしまいました。
原因などヒントをいただければと思います。
該当のソースコード
html
1<!--ハンバーガーボタンが表示されるところ--> 2<nav id="nav-prac-sp"> 3 <div class="nav-container flex-container"> 4 <a href="#"><img src="images/logonav.png"></a> 5 <img id="hamBtn" src="images/menu.png"> 6 </div> 7</nav> 8 9<!--ハンバーガーメニューが表示されるところ--> 10<nav id="nav-prac-sp-hamburger"> 11 <div class="hamburger-container"> 12 <p id="hamburger-close">メニューを閉じる</p> 13 <ul class="hamburger-menu"> 14 <li>トップページ</li> 15 <li>店舗情報</li> 16 <li>会社概要</li> 17 <li>ご注文・お問い合わせ</li> 18 </ul> 19 </div> 20</nav>
css
1/*メニュー本体(抜粋)*/ 2#nav-prac-sp-hamburger { 3 display: none; 4 position: absolute; 5 top: 0; 6 left: 0; 7 z-index: -1; 8 background-color: black; 9 color: white; 10 position: fixed; 11 z-index: 99; 12 width: 100%; 13 height: 100vh; 14 box-sizing: border-box; 15 margin: 0; 16 background: rgba(0, 0, 0, 0.95); 17 font-size: 20.8px; 18 } 19 20/*メニュー開閉操作*/ 21 #nav-prac-sp-hamburger.open { 22 display: block; 23 z-index: 99; 24 animation: showNav .5s ease 0s 1 normal; 25 } 26 #nav-prac-sp-hamburger.close { 27 display: block; 28 opacity: 0; 29 animation: hideNav .5s ease 0s 1 normal; 30 } 31 32 @keyframes showNav { 33 0% { 34 opacity: 0; 35 } 36 100% { 37 opacity: 1; 38 } 39 } 40 41 @keyframes hideNav { 42 0% { 43 opacity: 1; 44 z-index: 99; 45 } 46 100% { 47 opacity: 0; 48 z-index: -1; 49 } 50 } 51
Javascript
1 //ハンバーガーボタン 2 var hamBtn = document.getElementById('hamBtn'); 3 //メニューを閉じるボタン 4 var hamburgerClose = document.getElementById('hamburger-close'); 5 6 7 //メニューを開く関数 8function open() { 9 //ハンバーガーメニュー自体 10 var hamburger = document.getElementById('nav-prac-sp-hamburger'); 11 //ハンバーガーメニューからcloseを除き, openを付与 12 hamburger.classList.remove('close'); 13 hamburger.classList.add('open'); 14 } 15 16function close() { 17 var hamburger = document.getElementById('nav-prac-sp-hamburger'); 18 //ハンバーガーメニューからopenを除き, closeを付与 19 hamburger.classList.remove('open'); 20 hamburger.classList.add('close'); 21 } 22 23 //ハンバーガーボタンを押すと開く 24hamBtn.addEventListener('click', open); 25hamburgerClose.addEventListener('click', close);
回答1件
あなたの回答
tips
プレビュー