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

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

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

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

HTML5

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

629閲覧

ハンバーガーメニューの実装について

714nyankoro

総合スコア1

CSS3

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

HTML5

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2022/07/19 21:21

前提

ポートフォリオの作成をしているのですが、ハンバーガーメニューの実装で、
以下2点がうまく実装できずに悩んでおります。ご教授いただけますと幸いです。
よろしくお願いいたします。

①ハンバーガーメニューでページ内リンクにジャンプした時にハンバーガーメニューが閉じない

②検証ページでDimentionsをResponsiveにしてサイズを可変した際に、一瞬ハンバーガーメニューの中身が表示される。

該当のソースコード

HTML

1<header> 2 <div class="hamburger"> <span></span> <span></span> <span></span> </div> 3 <nav class="globalMenuSp"> <a href="index.html"><img class="top-icon" src="assets/picture/top/top_icon.png" alt="home"></a> 4 <ul> 5 <li> <a href="index.html">HOME</a> </li> 6 <li> <a href="works.html">WORKS</a> </li> 7 <li> <a href="about.html">ABOUT</a> </li> 8 <li> <a href="#footer">CONTACT</a> </li> 9 </ul> 10 </nav> 11</header>

CSS

1/* ハンバーガーボタン */ 2 .hamburger { 3 display: block; 4 position: fixed; 5 z-index: 3; 6 right: 15px; 7 top: 12px; 8 width: 42px; 9 height: 42px; 10 cursor: pointer; 11 text-align: center; 12 -webkit-transition: 0.5s all; 13 -moz-transition: 0.5s all; 14 transition: 0.5s all; 15 } 16 .hamburger span { 17 display: block; 18 position: absolute; 19 width: 30px; 20 height: 2px; 21 left: 6px; 22 background: #F16E8C; 23 } 24 .hamburger span:nth-child(1) { 25 top: 10px; 26 } 27 .hamburger span:nth-child(2) { 28 top: 20px; 29 } 30 .hamburger span:nth-child(3) { 31 top: 30px; 32 } 33 /* ナビ開いてる時のボタン */ 34 .hamburger.active { 35 -webkit-transform: rotate(360deg); 36 transform: rotate(360deg); 37 } 38 .hamburger.active span:nth-child(1) { 39 top: 16px; 40 left: 6px; 41 -webkit-transform: rotate(-45deg); 42 -moz-transform: rotate(-45deg); 43 transform: rotate(-45deg); 44 } 45 .hamburger.active span:nth-child(2) { 46 top: 16px; 47 -webkit-transform: rotate(45deg); 48 -moz-transform: rotate(45deg); 49 transform: rotate(45deg); 50 } 51 .hamburger.active span:nth-child(3) { 52 opacity: 0; 53 } 54 .top-icon { 55 display: block; 56 width: 180px; 57 margin: 80px auto 0; 58 } 59 header nav { 60 padding-right: inherit; 61 } 62 nav.globalMenuSp { 63 position: fixed; 64 z-index: 2; 65 top: 0; 66 left: 0; 67 color: #FFFDF1; 68 background: #FFFDF1; 69 text-align: center; 70 transform: translateX(100%); 71 transition: all 0.6s; 72 width: 100%; 73 height: 100%; 74 } 75 nav.globalMenuSp ul { 76 background: #FFFDF1; 77 margin: 38px auto 0; 78 padding: 0; 79 width: 100%; 80 text-align: center; 81 } 82 nav.globalMenuSp ul li { 83 list-style-type: none; 84 padding: 0; 85 width: 100%; 86 border-bottom: 1px solid #FFFDF1; 87 } 88 nav.globalMenuSp ul li:last-child { 89 padding-bottom: 0; 90 border-bottom: none; 91 } 92 nav.globalMenuSp ul li a { 93 display: block; 94 color: #3d1616; 95 text-decoration: none; 96 padding-bottom: 20px; 97 font-size: 2.0rem; 98 font-weight: 600; 99 } 100 /* このクラスを、jQueryで付与・削除する */ 101 nav.globalMenuSp.active { 102 transform: translateX(0%); 103 } 104

JavaScript

1$(function() { 2 $('.hamburger').click(function() { 3 $(this).toggleClass('active'); 4 5 if ($(this).hasClass('active')) { 6 $('.globalMenuSp').addClass('active'); 7 } else { 8 $('.globalMenuSp').removeClass('active'); 9 } 10 }); 11}); 12

試したこと

①については既に回答済みにあった下記2つをclassやidを付与して試してみたのですが、うまくできませんでした。
https://teratail.com/questions/128115
https://teratail.com/questions/372031

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

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

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

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

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

guest

回答1

0

ベストアンサー

JavaScript

1$(function() { 2 $('.hamburger, .globalMenuSp li').click(function() { 3 $('.hamburger').toggleClass('active'); 4 5 if ($('.hamburger').hasClass('active')) { 6 $('.globalMenuSp').addClass('active'); 7 } else { 8 $('.globalMenuSp').removeClass('active'); 9 } 10 }); 11});

あるいは下記でもいいでしょう。

JavaScript

1$(function () { 2 $('.hamburger, .globalMenuSp li').click(function () { 3 $('.hamburger').toggleClass('active'); 4 $('.globalMenuSp').toggleClass('active'); 5 }); 6});

投稿2022/07/19 23:42

hatena19

総合スコア33715

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

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

714nyankoro

2022/07/20 06:51

教えていただきありがとうございました! <nav class="globalMenuSp">をクリックしたら〜という定義が抜けていたということでしょうか? 色々試してみても上手くいかなかったので大変助かりました。 この度は、ご回答頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問