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

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

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

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

メニュー

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

JavaScript

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

HTML

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

CSS

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

Q&A

解決済

1回答

1063閲覧

ハンバーガーメニュー内の<a>を押してsectionに飛ぶときに一緒にnaviも閉じる仕様にしたいです

zuru17830405

総合スコア11

CSS3

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

メニュー

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

JavaScript

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/10/31 08:00

ハンバーガーメニューの中のnaviの<a>タグを押してsectionに飛ぶと共にハンバーガーメニューもフェードアウトさせたいです

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

クリックしたsectionには飛ぶがメニューが閉じてくれないです

該当のソースコード

html

1<nav class="navi" id="navi"> 2 <ul> 3 <li><a class="top return" href="#">TOP</a></li> 4 <li><a class="return" href="#information">INFORMATION</a></li> 5 <li><a class="return" href="#gallery">GALLERY</a></li> 6 <li><a class="return" href="#access">ACCESS</a></li> 7 <li><a class="return" href="#contact">CONTACT</a></li> 8 </ul> 9 </nav>

css

1#header .navi { 2 padding-top: 100px; 3 text-align: center; 4 z-index: 29; 5 position: fixed; 6 top: -300px; 7 left: 0; 8 width: 100%; 9 height: 300px; 10 background-color: #000; 11 cursor: pointer; 12 transition: all 0.5s; 13} 14.open #header .navi { 15 top: 0px; 16}

javascript

1document.addEventListener("DOMContentLoaded",function(){ 2 let body=document.body; 3 let hbg=document.getElementById('hbg').addEventListener('click',function(){ 4 body.classList.toggle('open'); 5 }); 6 let mask=document.getElementById('mask').addEventListener('click',function(){ 7 body.classList.remove('open'); 8 }); 9 let jump=document.querySelectorAll('#navi').addEventListener('click',function(){ 10 body.classList.remove('open'); 11 }); 12});

試したこと

逆にクラスを追加してメニューを閉じてみようと思ったけどダメ
functionを分けてみたけど思った様にいかない

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

みづらいコードの書き方だと思いますがお手を借りたいです、お願いします

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

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

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

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

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

guest

回答1

0

ベストアンサー

なんとか動くようになりましたが、質問と回答というよりもデバッグ作業でした・・・
どうして?と思うレベルの勘違いとコードを見様見真似で書いている印象だったので、もう少しだけ基礎を勉強し直した方がよろしいかと・・・

CSS

1.navi { 2 padding-top: 100px; 3 text-align: center; 4 z-index: 29; 5 position: fixed; 6 top: -300px; 7 left: 0; 8 width: 100%; 9 height: 300px; 10 background-color: #000; 11 cursor: pointer; 12 transition: all 0.5s; 13 color:white; 14 } 15 .open{//付け外しの為のクラスならこれだけでいいです 16 top:0px; 17 }

Java

1 document.addEventListener("DOMContentLoaded", function () { 2 //bodyでは断じてありません! 3 let navi = document.getElementById('navi'); 4 let hbg = document.getElementById('hbg').addEventListener('click', function () { 5 navi.classList.toggle('open'); 6 }); 7       //提供されたコードにはなかったのでコメントアウト 8 /*let mask = document.getElementById('mask').addEventListener('click', function () { 9 navi.classList.remove('open'); 10 });*/ 11 //クリックイベントに設定するのは、#naviではなく、各Aタグのクラスであるreturnです! 12 let returns = document.getElementsByClassName('return'); 13       //querySelectorAllを使う場合でも同様の処理が必要です! 14 for (let i = 0; i < returns.length; i++) { 15 let jump = returns[i].addEventListener('click', function () { 16 navi.classList.remove('open'); 17 }); 18 } 19 });

投稿2021/10/31 13:43

編集2021/10/31 14:06
tuna-kan

総合スコア23

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

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

zuru17830405

2021/10/31 23:47

ありがとうございました。 変数をnaviにしてしまうとhtmlのコードの記述上ハンバーガーメニューすらも動かなくなってしまったので、変数はbodyのまま参考にさせていただいたら無事動く様になりました!! たしかに見様見真似でやっているところはあるかと思いますので、この模写コーディングが終わりましたらもう一度基礎からやり直そうかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問