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

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

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

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

HTML5

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

jQuery

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

Q&A

解決済

1回答

1540閲覧

ハンバーガーメニューが正しく動かない

hiro212

総合スコア3

CSS3

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

HTML5

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

jQuery

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

0グッド

0クリップ

投稿2021/05/28 13:39

編集2021/05/30 21:31

前提・実現したいこと

HTML・CSS・jQueryでふわっと出てくるハンバーガーメニューを作成中です。
作成してみたのですが、ハンバーガーメニューを押しても隠れているメニューが表示されません。
様々なサイトを見てみたのですが中々解決方法がわからなかった為、恐縮ではありますがご質問させて頂きます…。

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

ハンバーガーメニューを押しても隠れているメニューが表示されない

該当のソースコード

HTML

<div class="container"> <div class="header-menu"> <div class="header-left"> <h1>Hiroto Morita</h1> <!-- <i class="fas fa-bars fa-lg menu-icon"></i> --> <div class="hamburger"> <span></span> <span></span> <span></span> </div> </div> <nav class="header-right"> <ul class="nav-list"> <li><a href="#home">Home</a></li> <li><a href="#about">About</a></li> <li><a href="#service">Service</a></li> <li><a href="#contact">Contact</a></li> </ul> </nav> </div> </div> </header> コード

CSS

.hamburger { display: block; position: fixed; z-index: 3; right: 13px; top: 12px; width: 42px; height: 42px; cursor: pointer; text-align: center; } .hamburger span { display: block; position: absolute; width: 30px; height: 2px; left: 6px; background: #000; -webkit-transition: 0.3s ease-in-out; -moz-transition: 0.3s ease-in-out; transition: 0.3s ease-in-out; } .hamburger span:nth-child(1) { top: 10px; } .hamburger span:nth-child(2) { top: 20px; } .hamburger span:nth-child(3) { top: 30px; } /* ナビ開いてる時のボタン */ .hamburger.active span:nth-child(1) { top: 16px; left: 6px; background: #fff; -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); transform: rotate(-45deg); } .hamburger.active span:nth-child(2), .hamburger.active span:nth-child(3) { top: 16px; background: #fff; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); transform: rotate(45deg); } nav.header-right { position: fixed; z-index: 2; top: 0; left: 0; color: #fff; background: rgba(0, 0, 0, 0.7); text-align: center; width: 100%; opacity: 0; transition: opacity .6s ease, visibility .6s ease; } nav.header-right ul { margin: 0 auto; padding: 0; width: 100%; } nav.header-right ul li { list-style-type: none; padding: 0; width: 100%; transition: .4s all; } nav.header-right ul li:last-child { padding-bottom: 0; } nav.header-right ul li:hover { background: #ddd; } nav.header-right ul li a { display: block; color: #fff; padding: 1em 0; text-decoration: none; } /* このクラスを、jQueryで付与・削除する */ nav.header-right.active { opacity: 100; } コード

jQuery

$(window).scroll(function () { $(".slide").each(function () { var imgPos = $(this).offset().top; var scroll = $(window).scrollTop(); var windowHeight = $(window).height(); if (scroll > imgPos - windowHeight + windowHeight / 4) { $(this).addClass("effect-scroll"); } }); }); jQuery(window).scroll(); /* ハンバーガーメニュー */ $('.hamburger').click(function () { $(this).toggleClass('active'); if ($(this).hasClass('active')) { $('.header-right').addClass('active'); } else { $('.header-right').removeClass('active'); } }); }); コード

ご教示頂けますと幸いです…。

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

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

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

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

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

mari.rinn

2021/05/30 00:10

該当する箇所だけで良いのでhtmlのコードも記載をお願いしたいのと、jQueryのコードは途中からではなく、そのクリックイベントの全部を記載していただけますか?
hiro212

2021/05/30 21:33

HTML掲載しているつもりでした。申し訳ございませんでした???? jQueryについて、全て記載いたしました。 ご指摘頂きありがとうございます。 追加した内容でご評価可能でしょうか?
guest

回答1

0

ベストアンサー

記載されているコードで動作テストを行ってみました(ブラウザはChrome)が、正常にメニューがふわっと表示されました。
Chromeデベロッパーツールのスマホサイズでの検証

それで確認なのですが、htmlのhead部分のjQueryの読み込みは、正しく行われていますか?
記載されているjQueryのコードが外部ファイル(仮にファイル名を、test.jsとすると、)だったとして、

html

1<script type="text/javascript" src="./jquery-3.2.1.min.js"></script> 2<script type="text/javascript" src="./test.js"></script>

このように、jQueryの読み込みを先に行わないといけないのですが、そうなっていますか?

それと、記載されているjQueryのコードは、頭の
$(function(){が抜けていますが、これはコピペし忘れただけですかね?
(閉じの });はあるので多分そうだとは思いますが)

あと、考えられることは、ブラウザのキャッシュが残っている場合。CSSやjavascriptなどはさいさいこれがあるので、更新したのに変化がないと思ったらまずはキャッシュをクリアしてください。

それと、問題には直接関係ないですが、

CSS

1 nav.header-right.active { 2 opacity: 100; 3 }

opacityの値は 0~1までです。 1 もしくは 1.0 としてください。

投稿2021/05/30 23:32

編集2021/05/30 23:37
mari.rinn

総合スコア296

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

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

hiro212

2021/06/01 01:42

ご回答を頂き誠にありがとうございます! また、ご返信が遅くなり大変申し訳ございません。 ◉jQueryの読み込みについて <!-- Google jQuery --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <!-- 自サイトのJavaScript --> <script src="portfolio1.js"></script> 上記の様になっております。間違っておりますでしょうか? ◉$(function){ の記載について 記載しております!コピペ漏れでした。申し訳ございません。 ◉キャッシュとopacity かしこまりました!ご教示頂きありがとうございます。
mari.rinn

2021/06/01 04:48

質問を閉められたということは正常に動いたということですかね。 それなら何よりです。(ちなみにjqueryの記載はそれで合っています)。 お疲れ様でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問