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

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

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

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

HTML

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

CSS

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

Q&A

解決済

1回答

1009閲覧

ページ内リンクでもハンバーガーメニューを自動で閉じさせたい。

chibifafa

総合スコア1

JavaScript

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/09/19 00:34

前提・実現したいこと

ハンバーガーメニューを実装したいのですが、リンク先を同じページ内の別の場所に設定し、ジャンプ後自動でメニューを閉じるようにしたい。

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

メニューのリンク先を同一ページ内の別の場所にすると、ジャンプはするもののメニューが開いたままで閉じず、いちいちメニューボタンを押さなくてはいけない状態です。

エラーメッセージ

該当のソースコード

html/css/Javascript

**html** <button type="button" class="menu-btn"> <i class="fa fa-bars" aria-hidden="true"></i> </button> <div class="menu"> <div class="menu__item"><a href="index.html#top">ホーム</a></div> <div class="menu__item"><a href="mani.html#mani_link">メニュー1</a></div> <div class="menu__item"><a href="act.html#action">メニュー2</a></div> <div class="menu__item"><a href="prof.html#profile">メニュー3</a></div> <div class="menu__item"><a href="sup.html#sup">メニュー4</a></div> </div> **css** /*---------------------------- * メニュー本体 *----------------------------*/ .menu{ position: fixed; top: 0; right: 0; z-index: 1; width: 100vw; height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #173d97; } .menu__item{ width: 100%; height: auto; padding: .5em 1em; text-align: center; color: #fff; box-sizing: border-box; } /*---------------------------- * アニメーション部分 *----------------------------*/ /* アニメーション前のメニューの状態 */ .menu{ transform: translateX(100vw); transition: all .3s linear; } /* アニメーション後のメニューの状態 */ .menu.is-active{ transform: translateX(0); } **Javascript** <!--JavaScriptハンバーガーメニュー用--> <script> document.querySelector('.menu-btn').addEventListener('click', function(){ document.querySelector('.menu').classList.toggle('is-active'); }); </script>

試したこと

リンク先を別ページにした場合は自動で閉じてくれました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2021/09/19 00:38

可能なら、コードはファイル毎にわけてください。
itagagaki

2021/09/19 00:51

> リンク先を別ページにした場合は自動で閉じてくれました。 それって新しいページを開くので、新たなページのハンバーガーメニューが初期状態になっているだけですよね?
chibifafa

2021/09/19 05:22

m.ts10806様 慣れておらず失礼いたしました。以後気を付けます。
chibifafa

2021/09/19 05:23

itagagaki様 おっしゃる通り、別ページは初期状態のままにしておりました。失礼いたしました。
m.ts10806

2021/09/19 06:40

質問は編集できます。
guest

回答1

0

ベストアンサー

メニューをクリックしたとき閉じるようにしておけばいいのでは。

js

1const menu = document.querySelector('.menu'); 2document.querySelector('.menu-btn').addEventListener('click', function(){ 3 menu.classList.toggle('is-active'); 4}); 5menu.addEventListener('click', function(){ 6 menu.classList.remove('is-active'); 7});

投稿2021/09/19 03:14

編集2021/09/19 03:15
hatena19

総合スコア33795

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

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

chibifafa

2021/09/19 05:21

できました!本当に助かりました。かなりの素人なので途方に暮れておりました。本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問