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

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

新規登録して質問してみよう
ただいま回答率
85.35%
メニュー

メニューは、UIにおける仕組みであり、ユーザに機能の表示と実行する手段を与えます。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1449閲覧

ハンバーガーメニューのページ内リンクをクリック時にメニューを閉じたい

beambeam

総合スコア7

メニュー

メニューは、UIにおける仕組みであり、ユーザに機能の表示と実行する手段を与えます。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/09/17 08:43

こんにちは。

レスポンシブでjQueryとCSSをつかって、
デバイスの幅が大きい時はメニューを上部固定、
デバイスの幅が小さいときのみハンバーガーアイコンを表示してメニューに切り替えるものをサイトに実装したのですが、
リンク先がページ内リンクのため、<ul>内部のメニューをクリックしても開いたハンバーガーメニューがうっとおしくなってしまいます。

リンク先をクリックしたときも、ハンバーガーメニューを閉じる機能を実装したいのですが、ご教授いただけますでしょうか?
よろしくお願いいたします。

HTML

1<div id="wrapper"> 2 3<!--メニュー--> 4 <div id="nav-wrapper"> 5 <p class="btn-gnavi"> <span></span> <span></span> <span></span> </p> 6 <nav id="global-navi"> 7 <ul class="menu"> 8 <li><a href="#menu01">更新履歴</a></li> 9 <li><a href="#menu02">当サイトについて</a></li> 10 <li><a href="#menu03">作品集</a></li> 11 <li><a href="#menu04">お問い合わせ</a></li> 12 </ul> 13 </nav> 14 </div> 15 <!--メニュー--> 16 17<h1 id="menu01">更新履歴</h1> 18~略~ 19<h1 id="menu02">当サイトについて</h1> 20~略~ 21<h1 id="menu03">作品集</h1> 22~略~ 23<h1 id="menu04">お問い合わせ</h1> 24 25</div>

jQuery

1$(function(){ 2 $(".btn-gnavi").on("click", function(){ 3 // ハンバーガーメニューの位置を設定するための変数 4 var rightVal = 0; 5 if($(this).hasClass("open")) { 6 // 「open」クラスを持つ要素はメニューを開いた状態に設定 7 rightVal = -300; 8 // メニューを開いたら次回クリック時は閉じた状態になるよう設定 9 $(this).removeClass("open"); 10 } else { 11 // 「open」クラスを持たない要素はメニューを閉じた状態に設定 (rightVal は0の状態 ) 12 // メニューを開いたら次回クリック時は閉じた状態になるよう設定 13 $(this).addClass("open"); 14 } 15 16 $("#global-navi").stop().animate({ 17 right: rightVal 18 }, 200); 19 }); 20});

CSS

1#global-navi { 2 background: #333333eb; 3 position: fixed; 4 top: 0; 5 right: 0px; 6 width: 100%; 7 font-weight: bold; 8} 9 10#nav-wrapper nav ul li{display:inline-block;font-size: 16px;padding: 10px 20px;} 11#nav-wrapper nav ul li a{ 12color: #ddd 13} 14 15@media screen and (max-width: 600px) { 16 17#nav-wrapper nav { 18 position: fixed; 19 top: 0; 20 right: -300px; 21 width: 250px; 22 height: 100%; 23 padding-top: 50px; 24 background:#333333eb; 25 font-size: 16px; 26 box-sizing: border-box; 27 z-index: 2 28} 29#nav-wrapper nav ul li { 30 display:block; 31 padding: 20px 28px; 32 font-weight: bold; 33} 34 35#nav-wrapper nav ul li a { 36 text-decoration: none; 37 color: #ddd 38} 39 40#nav-wrapper .btn-gnavi { 41 position: fixed; 42 top: 5px; 43 right: 20px; 44 width: 30px; 45 height: 24px; 46 z-index: 3; 47 box-sizing: border-box; 48 cursor: pointer; 49 -webkit-transition: all 400ms; 50 transition: all 400ms; 51} 52 53#nav-wrapper .btn-gnavi span { 54 position: absolute; 55 width: 30px; 56 height: 4px; 57 background: #222; 58 border-radius: 10px; 59 -webkit-transition: all 400ms; 60 transition: all 400ms 61} 62 63#nav-wrapper .btn-gnavi span:nth-child(1) { 64 top: 0 65} 66 67#nav-wrapper .btn-gnavi span:nth-child(2) { 68 top: 10px 69} 70 71#nav-wrapper .btn-gnavi span:nth-child(3) { 72 top: 20px 73} 74 75#nav-wrapper .btn-gnavi.open { 76 -webkit-transform: rotate(180deg); 77 transform: rotate(180deg) 78} 79 80#nav-wrapper .btn-gnavi.open span { 81 background: #fff 82} 83 84 85#nav-wrapper .contents section p { 86 position: absolute; 87 top: 50%; 88 width: 30%; 89 line-height: 1.4; 90 font-size: 20px; 91 color: #fff; 92 text-shadow: 0 0 6px #222; 93} 94 95}

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

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

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

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

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

guest

回答1

0

ベストアンサー

リンクボタンにメニューを閉じるクリックイベントを付与してあげればいいかと

jQuery

1$('.menu a').on("click", function () { 2 $(".btn-gnavi").removeClass("open"); 3 $("#global-navi").stop().animate({ 4 right: -300 5 }, 200); 6}); 7

投稿2020/09/17 10:15

編集2020/09/17 10:16
Create_NAYU

総合スコア101

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

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

beambeam

2020/09/18 00:07

ありがとうございました!無事解決することができました。 デバイスを大きくした際メニューが動いてしまうので、もう少し工夫してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問