ハンバーガーボタンクリック以外でもメニューが閉じる動きにしたい
cssとjQueryでハンバーガーメニューを作っています。
ボタンの動き、メニューの表示までは上手くいったのですが、ボタン以外でメニューを閉じる事ができません。メニュー項目のクリックまたはボタン以外の場所をクリックした時にメニューが隠れるようにしたいのですが、お分かりになる方がいましたらご教示下さい。
発生している問題・エラーメッセージ
メニューがボタンクリック以外で閉じない
該当のソースコード
HTML
1 <header class="page-header"> 2 <nav id="g-nav"> 3 <ul> 4 <li><a href="#">Home</a></li> 5 <li><a href="#link01">Portfolio</a></li> 6 <li><a href="#link02">About</a></li> 7 <li><a href="#link03">Contact</a></li> 8 </ul> 9 </nav> 10 <div id="hamburger"> 11 <span class="inner_line" id="line1"></span> 12 <span class="inner_line" id="line2"></span> 13 <span class="inner_line" id="line3"></span> 14 </div><!-- /.hamburger --> 15 </header><!-- /.page-header --> 16 17<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> 18 19<script> 20//humberger-menuの設定 21function hamburger() { 22 document.getElementById('line1').classList.toggle('line_1'); 23 document.getElementById('line2').classList.toggle('line_2'); 24 document.getElementById('line3').classList.toggle('line_3'); 25 document.getElementById('g-nav').classList.toggle('in'); 26} 27document.getElementById('hamburger').addEventListener('click' , function () { 28 hamburger(); 29} ); 30 </script> 31 32
CSS
1 #g-nav{ 2 position: absolute; 3 top: 0; 4 left: -40%; 5 width: 40%; 6 height: 100vh; 7 background: rgba(255, 47, 158, 0.7); 8 position: fixed; 9 transition: .7s; 10} 11#g-nav ul{ 12 padding-top: 80px; 13} 14#g-nav li:nth-of-type(1){ 15 margin-top: 70px; 16} 17#g-nav ul li{ 18 font-size: 40px; 19 text-align: center; 20 margin-bottom: 40px; 21} 22#g-nav a{ 23 display: block; 24 text-decoration: none; 25 color: var(--txt02-color); 26 margin: 0 15px; 27 padding: 10px; 28 transition: .5s; 29} 30#hamburger { 31 display: block; 32 position: absolute; 33 top: 20px; 34 left: 30px; 35 width: 50px; 36 height: 44px; 37 cursor: pointer; 38 transition: 1s; 39 position: fixed; 40} 41.inner_line { 42 display: block; 43 position: absolute; 44 left: 0; 45 width: 55px; 46 height: 3px; 47 background-color: var(--txt01-color); 48 transition: 1s; 49 border-radius: 4px; 50} 51#line1 { 52 top: 0; 53} 54#line2 { 55 top: 20px; 56} 57#line3 { 58 bottom: 0px; 59} 60 61.in{ 62 transform: translateX(100%); 63} 64.line_1,.line_2,.line_3{ 65 background: #000000; 66} 67.line_1 { 68 transform: translateY(20px) rotate(-45deg); 69 top: 0; 70} 71.line_2 { 72 opacity: 0; 73} 74.line_3 { 75 transform: translateY(-20px) rotate(45deg); 76 bottom: 0; 77}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
VS-code
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/25 16:28