質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

2704閲覧

ナビゲーションが消える

kyonu

総合スコア3

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/07/08 07:03

前提・実現したいこと

画面幅900px以下でハンバーガーメニューが表示されるように設定しています。

発生している問題・エラーメッセージ

問題は2つで、1つはハンガーメニューのaボタンを押してから、901px以上に画面幅を広げるとnav-wrapperが消えてしまい、リロードしないと再表示されないことです。 2目は、901px以上の時にaボタンを押し、リロードせずにハンバーガメニューに切り替わると、ページ内リンクはできるのですがnav-wrapperが消えなくなってしまうことです。 この問題を解消したいです。何卒よろしくお願いいたします。

該当のソースコード

HTML

1 <header> 2 <div class="header-inner"> 3 <h1><a href="">title</a></h1> 4 <div class="nav-wrapper"> 5 <nav class="header-nav"> 6 <ul class="nav-ul"> 7 <li class="header-list"><a href="#">About</a></li> 8 <li class="header-list"><a href="#work">Work</a></li> 9 <li class="header-list"><a href="">Contact</a></li> 10 </ul> 11 </nav> 12 </div> 13 14 <div class="nav-btn"> 15 <span class="btn btn-top"></span> 16 <span class="btn btn-mid"></span> 17 <span class="btn btn-bottom"></span> 18 </div> 19 </div> 20 </header>

CSS

1 2body.noscroll{ 3 overflow: hidden; 4} 5 6header, footer{ 7 background-color: #1D3FA4; 8 color: white; 9} 10 11header { 12 width: 100%; 13 position: fixed; 14 top: 0; 15 left: 0; 16 z-index: 5; 17} 18 19.header-list { 20 font-size: 20px; 21} 22 23.header-inner { 24 display: flex; 25 justify-content: space-between; 26 align-items: center; 27 padding: 23px 70px; 28} 29.nav-ul { 30 width: 250px; 31 display: flex; 32 justify-content: space-between; 33 align-items: center; 34} 35 36.nav-btn { 37 display: none; 38} 39 40@media screen and (max-width:900px) { 41 /* ハンバーガメニュー */ 42.nav-btn { 43 display: block; 44 width: 43px; 45 height: 43px; 46 position: fixed; 47 z-index: 3; 48 top: 31px; 49 right: 22px; 50 border: none; 51 background-color: #1D3FA4; 52 cursor: pointer; 53} 54 55.btn { 56 width: 30px; 57 height: 2px; 58 display: block; 59 position: absolute; 60 left: 50%; 61 transform: translateX(-50%); 62 background-color: #fff; 63 border-radius: 5px; 64} 65 66.btn-top{ 67 top: 13px; 68} 69 70.btn-mid{ 71 top: 50%; 72} 73 74.btn-bottom{ 75 bottom: 10px; 76} 77 78.nav-btn.close .btn-top { 79 transform: translate(-50%,10px) rotate(45deg); 80 transition: transform .3s; 81} 82 83.nav-btn.close .btn-mid{ 84 opacity: 0; 85 transition: opacity .3s; 86} 87 88.nav-btn.close .btn-bottom{ 89transform: translate(-50%,-8px) rotate(-45deg); 90transition: transform .3s; 91} 92 93.nav-wrapper { 94 display: none; 95 width: 100vw; 96 height: 100vh; 97 position: fixed; 98 top: 0; 99 left: 0; 100 z-index: 2; 101} 102 103.header-nav { 104 width: 100%; 105 height: 100%; 106 background-color: #294BB0; 107 z-index: 2; 108} 109 110.header-nav, .nav-ul { 111 display: block; 112 position: absolute; 113 top: 50%; 114 left: 50%; 115 transform: translate(-50%,-50%); 116 text-align: center; 117} 118 119.header-nav, .header-list { 120 margin-right: 0; 121} 122 123.header-list { 124 margin: 70px 0; 125 font-size: 28px; 126} 127}

jquery

1$('.nav-btn').on('click', function () { 2 $('.nav-btn').toggleClass('close'); 3 $('.nav-wrapper').fadeToggle(300); 4 $('body').toggleClass('noscroll'); 5}); 6if( $(window).width() <= 900){ 7$('.header-list > a').on('click', function() { 8 $('.nav-wrapper').fadeOut(300); 9 $('.nav-btn').removeClass('close'); 10 $('body').removeClass('noscroll'); 11}); 12};

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Javascriptで対処してみました。

javascript

1 $('.nav-btn').on('click', function () { 2 $('.nav-btn').toggleClass('close'); 3 $('.nav-wrapper').fadeToggle(300); 4 $('body').toggleClass('noscroll'); 5 }); 6 $('.header-list > a').on('click', function() { 7 // ここのif文の位置が変わっています。 8 if( $(window).width() <= 900){ 9 $('.nav-wrapper').fadeOut(300); 10 $('.nav-btn').removeClass('close'); 11 $('body').removeClass('noscroll'); 12 }; 13 }); 14 $(window).resize(function() { 15 if( $(window).width() <= 900){ 16 // リサイズされて900px以下なので、ハンバーガーメニュー範囲のサイズ変更 17 // メニューを開いたままウィンドウを広げたとき、メニューがXのままになるのを防ぐ 18 $('.nav-btn').removeClass('close'); 19 // ハンバーガーメニューを出すのでヘッダは隠す 20 $('.nav-wrapper').hide(); 21 } else { 22 // リサイズされて900pxを超えているで、通常ヘッダ 23 $('.nav-wrapper').show(); 24 } 25 })

投稿2020/07/08 10:09

YakumoSaki

総合スコア2027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyonu

2020/07/08 10:41

初めまして!回答ありがとうございます! 提案していただいたように修正したところ、解決しました!昨日から悩んでいたので、解決策が見つかり安心しました。 ありがとうございますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問