前提・実現したいこと
レスポンシブのスマホ用に、ハンバーガーメニューを設置したいと思っています。
発生している問題・エラーメッセージ
ハンバーガーメニュー内のページ内リンクをクリックしてもメニューが開いたまま
該当のソースコード
HTML
1<div id="nav-drawer"> 2 <input id="nav-input" type="checkbox" class="nav-unshown"> 3 <label id="nav-open" for="nav-input"><span></span></label> 4 <label class="nav-unshown" id="nav-close" for="nav-input"></label> 5 6 <div id="nav-content"> 7 <ul> 8 <li><a href="#sec01">テキスト</a></li> 9 <li><a href="#sec02">テキスト</a></li> 10 <li><a href="#sec03">テキスト</a></li> 11 <li><a href="#sec04">テキスト</a></li> 12 <li><a href="#sec05">テキスト</a></li> 13 </ul> 14 </div> 15 16</div> 17 18
CSS
1#nav-drawer { 2 position: relative; 3} 4 5/*チェックボックス等は非表示に*/ 6.nav-unshown { 7 display:none; 8} 9 10/*アイコンのスペース*/ 11#nav-open { 12 display: inline-block; 13 width: 30px; 14 height: 22px; 15 vertical-align: middle; 16} 17 18/*ハンバーガーアイコンをCSSだけで表現*/ 19#nav-open span, #nav-open span:before, #nav-open span:after { 20 position: absolute; 21 height: 3px;/*線の太さ*/ 22 width: 25px;/*長さ*/ 23 border-radius: 3px; 24 background: #555; 25 display: block; 26 content: ''; 27 cursor: pointer; 28} 29#nav-open span:before { 30 bottom: -8px; 31} 32#nav-open span:after { 33 bottom: -16px; 34} 35 36/*閉じる用の薄黒カバー*/ 37#nav-close { 38 display: none;/*はじめは隠しておく*/ 39 position: fixed; 40 z-index: 99; 41 top: 0;/*全体に広がるように*/ 42 left: 0; 43 width: 100%; 44 height: 100%; 45 background: black; 46 opacity: 0; 47 transition: .3s ease-in-out; 48} 49 50/*中身*/ 51#nav-content { 52 overflow: auto; 53 position: fixed; 54 top: 0; 55 left: 0; 56 z-index: 9999;/*最前面に*/ 57 width: 90%;/*右側に隙間を作る(閉じるカバーを表示)*/ 58 max-width: 330px;/*最大幅(調整してください)*/ 59 height: 100%; 60 background: #fff;/*背景色*/ 61 transition: .3s ease-in-out;/*滑らかに表示*/ 62 -webkit-transform: translateX(-105%); 63 transform: translateX(-105%);/*左に隠しておく*/ 64} 65 66/*チェックが入ったらもろもろ表示*/ 67#nav-input:checked ~ #nav-close { 68 display: block;/*カバーを表示*/ 69 opacity: .5; 70} 71 72#nav-input:checked ~ #nav-content { 73 -webkit-transform: translateX(0%); 74 transform: translateX(0%);/*中身を表示(右へスライド)*/ 75 box-shadow: 6px 0 25px rgba(0,0,0,.15); 76} 77 78@media screen and (min-width:640px) { 79 #nav-open { 80 display:none; 81 } 82} 83
Javascript
1$(function(){ 2 $('#nav-input a').on('click', function() { 3 ('#nav-input,#nav-close').toggleClass('checked'); 4 document.getElementById("nav-input,nav-close").style.display ="none"; 5 }) 6 }); 7
試したこと
JavaScriptを調べて試してみたのですが、メニューが閉じても再度開けなくなったりして
わからなくなってしまいました。
回答1件
あなたの回答
tips
プレビュー