前提・実現したいこと
コーディングについて勉強中なのですが、ハンバーガーメニューについて困ったことがあり、対応策が分からずこちらにご質問させていただきます。
【実現したいこと】
1.ハンバーガーメニューが閉じている状態でもなぜかリンク先が押せてしまうので改善したい。(ハンバーガーメニューを閉じている状態の時、リンクの文字は見えないが、マウスを画面上部に持っていくとhoverになり押せてしまう。)
2.リンクをクリック後、リンク先に飛び、自動的にハンバーガーメニューが閉じるようにしたい。
該当のソースコード
HTML
1 <header> 2 <h1 class="sp">UNIQUE</h1> 3 <div class="pc"> 4 <div> 5 <h1>UNIQUE</h1> 6 <ul> 7 <li><a href="#01">The Work</a></li> 8 <li><a href="#02">About Me</a></li> 9 <li><a href="#03">What can i do</a></li> 10 <li><a href="#04">Contact</a></li> 11 </ul> 12 </div> 13 </div> 14 15 <!--ハンバーガーメニュー--> 16 <div class="hamburger sp"> 17 <span></span> 18 <span></span> 19 <span></span> 20 </div> 21 22 <nav class="globalMenuSp sp"> 23 <ul id="menu"> 24 <li><a href="#01">Menu1</a></li> 25 <li><a href="#02">Menu2</a></li> 26 <li><a href="#03">Menu3</a></li> 27 <li><a href="#04">Menu4</a></li> 28 </ul> 29 </nav> 30 31 </header>
css
1header { 2 position: fixed; 3 width: 100%; 4 z-index: 100; 5} 6 7header > div.pc { 8 width: 100%; 9} 10 11header > div:first-of-type div { 12 display: flex; 13 flex-wrap: wrap; 14 width: 100%; 15 justify-content: space-between; 16 align-items: center; 17 padding: 0 3rem; 18 background-color: #9e9e9e; 19} 20 21header > div:first-of-type div h1 { 22 width: calc((100% - 2rem) / 10 * 2); 23 vertical-align: middle; 24} 25 26header > div:first-of-type div h1 { 27 font-size: 2.8rem; 28 padding: 2rem; 29} 30 31 32 33header > div:first-of-type div ul { 34 display: flex; 35 flex-wrap: wrap; 36 width: calc((100% - 2rem) / 10 * 8); 37 justify-content: flex-end; 38} 39 40header > div:first-of-type div ul li a { 41 font-size: 1.4rem; 42 padding: 1rem 1rem; 43 display: inline-block; 44} 45 46 47 48 49 50 51@media screen and (max-width: 768px) { 52 53 header { 54 background-color: #9e9e9e; 55 } 56 57 header > h1 { 58 font-size: 2.8vw; 59 padding: 3.5vh 3vw; 60 } 61 62 /* ハンバーガーボタン */ 63 .hamburger { 64 display: block; 65 position: fixed; 66 z-index: 3; 67 right: 13px; 68 top: 12px; 69 width: 42px; 70 height: 42px; 71 cursor: pointer; 72 text-align: center; 73 } 74 75 .hamburger span { 76 display: block; 77 position: absolute; 78 width: 30px; 79 height: 2px; 80 left: 6px; 81 background: #555; 82 -webkit-transition: 0.5s ease-in-out; 83 -moz-transition: 0.5s ease-in-out; 84 transition: 0.5s ease-in-out; 85 } 86 87 .hamburger span:nth-child(1) { 88 top: 10px; 89 } 90 91 .hamburger span:nth-child(2) { 92 top: 20px; 93 } 94 95 .hamburger span:nth-child(3) { 96 top: 30px; 97 } 98 99 /* ナビ開いてる時のボタン */ 100 .hamburger.active span:nth-child(1) { 101 top: 16px; 102 left: 6px; 103 background: #fff; 104 -webkit-transform: rotate(315deg); 105 -moz-transform: rotate(315deg); 106 transform: rotate(315deg); 107 } 108 109 .hamburger.active span:nth-child(2), 110 .hamburger.active span:nth-child(3) { 111 top: 16px; 112 background: #fff; 113 -webkit-transform: rotate(-315deg); 114 -moz-transform: rotate(-315deg); 115 transform: rotate(-315deg); 116 } 117 118 nav.globalMenuSp { 119 position: fixed; 120 z-index: 2; 121 top: 0; 122 left: 0; 123 color: #fff; 124 background: rgba(0, 0, 0, 0.7); 125 text-align: center; 126 width: 100%; 127 opacity: 0; 128 transition: opacity .6s ease, visibility .6s ease; 129 } 130 131 nav.globalMenuSp ul { 132 margin: 0 auto; 133 padding: 0; 134 width: 100%; 135 } 136 137 nav.globalMenuSp ul li { 138 list-style-type: none; 139 padding: 0; 140 width: 100%; 141 transition: .4s all; 142 } 143 144 nav.globalMenuSp ul li:last-child { 145 padding-bottom: 0; 146 } 147 148 nav.globalMenuSp ul li:hover { 149 background: #ddd; 150 } 151 152 nav.globalMenuSp ul li a { 153 display: block; 154 color: #fff; 155 padding: 1em 0; 156 text-decoration: none; 157 } 158 159 /* このクラスを、jQueryで付与・削除する */ 160 nav.globalMenuSp.active { 161 opacity: 100; 162 163 } 164}
javascript
1<script> 2 jQuery(function() { 3 jQuery('.hamburger').click(function() { 4 jQuery(this).toggleClass('active'); 5 6 if (jQuery(this).hasClass('active')) { 7 jQuery('.globalMenuSp').addClass('active'); 8 9 } else { 10 jQuery('.globalMenuSp').removeClass('active'); 11 } 12 }); 13 }); 14</script>
試したこと
1.ハンバーガーメニューが閉じている状態の時にリンクが押せてしまう件についてはGoogleでも検索しましたが解決策が見当たりませんでした。
2.リンクをクリック後、ハンバーガーメニューを閉じる方法を探し、下記のソースコードでおそらく実現可能ではないかと判断しました。しかし、ソースコードの入力場所が違うのか、どこに入れても目標とする動きが無かったので困っています。
javascript
1jQuery('#manu a[href]').on('click', function(event) { 2 jQuery('.hamburger').trigger('click'); 3 });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/23 08:08
2020/08/23 12:26