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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

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

Q&A

解決済

1回答

342閲覧

jqueryで作ったハンバーガメニューの 一部が動作しません。 (mask のclass)と bodyのスクロール固定)

niconic73027793

総合スコア215

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

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

0グッド

0クリップ

投稿2022/04/21 04:58

jquery を使ってハンバーガーメニューを作っています。

ハンバーガーメニューをクリックすると、ナビメニューがでてくる動作までできたのですが、

メニューを開くとマスクがかかる部分があるのですが、

一瞬、display:block のclassが付与されるのですが、 すぐにクラスが外れて display:none; になってしまい
機能しません。

また、
body を ハンバーガーメニューをクリックすると、スクロールができないように

body.noscroll{
position:fixed;
overflow:hidden;
}

と書いているのですが、これも機能しません。

何処がちがっているのでしょうか?

<nav id="navi"> <ul class="list-nav container"> <li><a href="index.html">トップ</a></li> <li><a href="about.html">サロンについて</a></li> <li><a href="menu.html">メニュー</a></li> <li><a href="notes.html">注意事項</a></li> <li><a href="recruit.html">求人情報</a></li> </ul> <!-- /.list-nav --> </nav> <!-- /#navi --> <div class="hamburger js-hamburger"> <span></span> <span></span> <span></span> </div> <!-- /.hamburger --> <div id="burger-musk"></div> <div class="space"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
body { background-color:#000; color:#fff; font-family:'Noto Serif JP',serif; font-size: 1rem; } /* 背景固定してスクロールバーを消す*/ body.noscroll{ position:fixed; overflow:hidden; } .container{ max-width:880px; margin:0 auto; padding:0 5%; width:100%; } /* 背景固定してスクロールバーを消す*/ body.noscroll{ position:fixed; overflow:hidden; } #navi { width: 300px; height:100vh; background: #fff; padding: 25px; position: fixed; top: 0; left: -300px; bottom: 0; opacity: 0; overflow-y: auto; transition: 0.5s; z-index: 20; } #navi .list-nav{ display:flex; justify-content:space-between; flex-direction:column; } #navi .list-nav li a{ color:#000; font-weight:bold; display:inline-block; } #navi .list-nav li a:hover{ opacity:.7; } #navi.open { left: 0; opacity: 1; } #navi ul.nav-menu { margin-bottom: 30px; } #navi ul li { padding: 10px 0; } /* ハンバーガ―メニュー */ .hamburger { display:block; width: 100px; height: 100px; position: fixed; top: 0; right: 0; z-index: 30; cursor: pointer; transition: 0.3s; } .hamburger:hover { opacity: 0.7; } /* ハンバーガーメニューの線の設定(メニューが閉じている時) */ .hamburger span { width: 50px; height: 2px ; background: #fff; position: absolute; left: 25px; transition: 0.3s ease-in-out; } /* 1本目の線の位置を設定 */ .hamburger span:nth-child(1) { top: 36px; } /* 2本目の線の位置を設定 */ .hamburger span:nth-child(2) { top: 50px; } /* 3本目の線の位置を設定 */ .hamburger span:nth-child(3) { top: 64px; } /* ハンバーガーメニューの線の設定(メニューが開いている時) 1本目の線を-45度回転 */ .hamburger.open span:nth-child(1) { top: 47px; left: 25px; background :#fff; transform: rotate(-45deg); } /* 2本目と3本目は重ねて45度回転 */ .hamburger.open span:nth-child(2), .hamburger.open span:nth-child(3) { top: 47px; background: #fff; transform: rotate(45deg); } #burger-musk { display: none; transition: 0.5s; } #burger-musk.open { width: 100%; height: 100%; background-color: pink; cursor: pointer; display: block; opacity: 0.8; position: fixed; top: 0; left: 0; z-index: 50; } .space{ width:400px; height:900px; }
/*================================================= ハンバーガ―メニュー ===================================================*/ $('.js-hamburger').on('click', function() { $('.hamburger').toggleClass('open'); $('#navi').toggleClass('open'); if ($('hamburger').hasClass('open')) { $('body').addClass('noscroll'); $('#burger-musk').fadeToggle(300).addClass('.open'); } else { $('body').removeClass('noscroll'); $('#burger-musk').fadeToggle(300).removeClass('open'); } }); // #maskのエリアをクリックした時にメニューを閉じる $('#burger-musk').on('click', function() { $('#navi').removeClass('open'); }); // リンクをクリックした時にメニューを閉じる $('#navi a').on('click', function() { $('#navi').removeClass('open'); }); //  ナビをクリックした時にメニューを閉じる $('#navi').on('click', function() { $('#navi').removeClass('open'); });

コードペンURL
検証ツールで起こる現象
説明動画URL

試した事

スペルチェック
jquery 記述確認
検証ツールで確認

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

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

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

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

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

guest

回答1

0

ベストアンサー

typoです。
$('hamburger').hasClass('open')$('.hamburger').hasClass('open')
.addClass('.open').addClass('open')

投稿2022/04/21 05:06

編集2022/04/21 05:10
Lhankor_Mhy

総合スコア36134

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

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

niconic73027793

2022/04/21 05:44

ありがとうございます。 できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問