ハンバーガーメニューを作成中ですが、表示したメニュー一覧を閉じることができません。
また、縦並びのメニュー一覧を、より広く等間隔に表示できないでいます。
ご指導いただければ幸いです。
HTML
1 2<div id="nav-wrapper" class="nav-wrapper"> 3 <div class="hamburger" id="js-hamburger"> 4 <span class="hamburger__line hamburger__line--1"></span> 5 <span class="hamburger__line hamburger__line--2"></span> 6 <span class="hamburger__line hamburger__line--3"></span> 7 <nav class="sp-nav"> 8 <ul> 9 <li><a href="about.html">About</a></li> 10 <li><a href="Staff.html">Staff</a></li> 11 <li><a href="Menu.html">Menu</a></li> 12 <li><a href="Blog.html">Blog</a></li> 13 <li><a href="Access.html">Access</a></li> 14 </ul> 15 </nav> 16 <div class="black-bg" id="js-black-bg"></div> 17 </div> 18 19
CSS
1 2 3@media screen and (max-width: 600px) { 4 5 6 /* 7 hamburger(ハンバーガーアイコン) 8 =================================== */ 9 .hamburger { 10 position: absolute; 11 right: 20px; 12 top: 20px; 13 width: 50px; 14 height: 40px; 15 cursor: pointer; 16 17 z-index: 300; 18 } 19 20 .hamburger__line { 21 position: absolute; 22 width: 50px; 23 height: 3px; 24 right: 0; 25 background-color: #000; 26 /* background-color: red; */ 27 transition: all 0.5s; 28 } 29 30 .hamburger__line--1 { 31 top: 1px; 32 } 33 34 .hamburger__line--2 { 35 top: 18px; 36 } 37 38 .hamburger__line--3 { 39 top: 36px; 40 } 41 42 /*ハンバーガーがクリックされたら*/ 43 .open .hamburger__line--1 { 44 transform: rotate(-45deg); 45 top: 11px; 46 } 47 48 .open .hamburger__line--2 { 49 opacity: 0; 50 } 51 52 .open .hamburger__line--3 { 53 transform: rotate(45deg); 54 top: 11px; 55 } 56 57 /* 58 sp-sp-nav(ナビ) 59 =================================== */ 60 .sp-nav { 61 position: fixed; 62 right: -100%; /*ハンバーガーがクリックされる前はWindow右側に隠す*/ 63 top: 0; 64 width: 70%; /* 出てくるスライドメニューの幅 */ 65 height: 100vh; 66 background-color: #fff; 67 /* background-color:green; */ 68 transition: all 0.5s; 69 z-index: 200; 70 overflow-y: auto; /* メニューが多くなったらスクロールできるように */ 71 } 72 73 /*ハンバーガーがクリックされたら右からスライド*/ 74 .open .sp-nav { 75 right: 0; 76 /* background-color: hotpink; */ 77 height: 580px; 78 } 79 80 81 /* 82 black-bg(ハンバーガーメニュー解除用bg) 83 =================================== */ 84 .black-bg { 85 position: fixed; 86 left: 0; 87 top: 0; 88 width: 100vw; 89 height: 100vh; 90 z-index: 5; 91 /* background-color: #000; */ 92 /* background-color: blue; */ 93 opacity: 0; 94 visibility: hidden; 95 transition: all 0.5s; 96 cursor: pointer; 97 z-index: 100; 98 } 99 100 /*ハンバーガーメニューが開いたら表示*/ 101 .open .black-bg { 102 opacity: 0.3; 103 visibility: visible; 104 /* background-color: lawngreen; */ 105 } 106 107} 108 109
JavaScript
1window.onload = function () { 2 var nav = document.getElementById('nav-wrapper'); 3 var hamburger = document.getElementById('js-hamburger'); 4 var blackBg = document.getElementById('js-black-bg'); 5 6 hamburger.addEventListener('click', function () { 7 nav.classList.toggle('open'); 8 }); 9 blackBg.addEventListener('click', function () { 10 nav.classList.remove('open'); 11 }); 12}; 13
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。