前提・実現したいこと
ハンバーガーメニューを設置しており、一部ページ内リンクとスムーススクロールを設定しています。
ハンバーガーメニュー内のリンクをクリックするとハンバーガーメニューが閉じるようにしたいと考えています。
しかしスクロールされず、ハンバーガーメニューも閉じずに開いたままです。
該当のソースコード
html
1<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>//jQueryのバージョン 2 3<div class="hamburger"> 4 <div class="Toggle"> 5 <span></span> 6 <span></span> 7 <span></span> 8 </div> 9 </div> 10 </div> 11 12 <nav class="NavMenu"> 13 <ul class="hummanu"> 14 <li><a href="#work">Works</a></li> 15 <li><a href="#about">About</a></li> 16 <li><a href="#contact">Contact</a></li> 17 </ul> 18 </nav> 19 20<div class="work">//各スクロールしたい階層 21<div class="about"> 22<div class="contact"> 23 24
CSS
1.Toggle { 2 /* display: inline-block; */ 3 position: relative; 4 /* right: 13px; */ 5 /* top: 12px; */ 6 width: 40px; 7 height: 40px; 8 cursor: pointer; 9 z-index: 3; 10 /* text-align: right; */ 11} 12 13.Toggle span { 14 display: block; 15 position: absolute; 16 width: 30px; 17 border-bottom: solid 5px #ff8c00; 18 -webkit-transition: .35s ease-in-out; /*変化の速度を指定*/ 19 -moz-transition: .35s ease-in-out; /*変化の速度を指定*/ 20 transition: .35s ease-in-out; /*変化の速度を指定*/ 21 left: 6px; 22} 23 24.Toggle span:nth-child(1) { 25 top: 9px; 26} 27 28.Toggle span:nth-child(2) { 29 top: 18px; 30} 31 32.Toggle span:nth-child(3) { 33 top: 27px; 34} 35 36 37.Toggle.active span:nth-child(1) { 38 top: 18px; 39 left: 6px; 40 -webkit-transform: rotate(-45deg); 41 -moz-transform: rotate(-45deg); 42 transform: rotate(-45deg); 43} 44 45 46.Toggle.active span:nth-child(2), 47.Toggle.active span:nth-child(3) { 48 top: 18px; 49 -webkit-transform: rotate(45deg); 50 -moz-transform: rotate(45deg); 51 transform: rotate(45deg); 52} 53//scroll.css 54 55 56nav.NavMenu { 57 position: fixed; /*表示位置を固定*/ 58 z-index: 2; /*重ね順を変更*/ 59 top: 0; /*表示位置を指定*/ 60 left: 0; /*表示位置を指定*/ 61 background: transparent; /*背景を透明にする*/ 62 color: #000; /*文字色を白にする*/ 63 text-align: center; /*テキストを中央揃え*/ 64 width: 100%; /*全幅表示*/ 65 transform: translateY(-100%); /*ナビを上に隠す*/ 66 transition: all 0.6s; /*アニメーションの時間を指定*/ 67 68 69} 70 71.open.NavMenu { 72 top: 60px; 73 74} 75 76nav.NavMenu ul { 77 background: #ccc; /*背景をグレーにする*/ 78 width: 100%; 79 margin: 0 auto; 80 padding: 0; 81 height: 100vh; 82 display: flex; 83 flex-direction: column; 84 background-color: rgba(0, 0, 0, 0.9); 85 86} 87 88nav.NavMenu ul li { 89 font-size: 1.1em; 90 list-style-type: none; 91 padding: 0; 92 width: 100%; 93 94} 95 96nav.NavMenu ul li:last-child { 97 padding-bottom: 0; 98 border-bottom: none; /*最後のメニュー項目のみ下線を消す*/ 99} 100 101nav.NavMenu ul li a { 102 display: block; /*クリックできる領域を広げる*/ 103 color: #ffffff; 104 padding: 1em 0; 105 text-decoration: none; 106} 107 108nav.NavMenu.active { 109 transform: translateY(0%); 110} 111//Hamburger.css
javascript
1//hambuger.js 2 3$(function () { 4 $('.Toggle').click(function () { 5 $('header').toggleClass('open'); 6 $(this).toggleClass('active'); 7 if ($(this).hasClass('active')) { 8 $('.NavMenu').addClass('active'); //クラスを付与 9 } else { 10 $('.NavMenu').removeClass('active'); //クラスを外す 11 } 12 }); 13}); 14 15
javascript
1 2//scroll.js 3 4$(function () { 5 $('a[href^=#]').click(function() { 6 var speed = 400; 7 var href= $(this).attr("href"); 8 var target = $(href == "#" || href == "" ? 'html' : href); 9 var position = target.offset().top; 10 $('body,html').animate({scrollTop:position}, speed, 'swing'); 11 $('.NavMenu').removeClass('open'); 12 $('.NavMenu').removeClass('active'); 13 $(".Toggle").removeClass('active'); 14 return false; 15 }); 16});
ここにより詳細な情報を記載してください。
色んな記事を見て試しましたが、全く動かず消えずでした。
JS初心者のため,すみませんがよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー