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

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

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

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

JavaScript

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

jQuery

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

HTML

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

Q&A

解決済

1回答

438閲覧

javascriptによるメニュー表示の不具合

a10

総合スコア6

HTML5

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

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2019/12/15 05:07

編集2019/12/15 06:39

前提・実現したいこと

javascriptでハンバーガーメニューを実装しようとしています。
仕様としましては、
①ハンバーガーのボタンをクリックすると、
②画面いっぱいにメニューが表示される。
③メニュー内の「メニューを閉じる」をクリックすると、
④メニューが閉じる。

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

実行結果は、ハンバーガーのボタンをクリックし、メニューを閉じるを押すとメニューが閉じるようになりました。
しかし、その動作は一回目だけで、一度メニューを閉じた後、ハンバーガーボタンをクリックしてもメニューが表示されなくなってしまいました。

原因などヒントをいただければと思います。

該当のソースコード

html

1<!--ハンバーガーボタンが表示されるところ--> 2<nav id="nav-prac-sp"> 3 <div class="nav-container flex-container"> 4 <a href="#"><img src="images/logonav.png"></a> 5 <img id="hamBtn" src="images/menu.png"> 6 </div> 7</nav> 8 9<!--ハンバーガーメニューが表示されるところ--> 10<nav id="nav-prac-sp-hamburger"> 11 <div class="hamburger-container"> 12 <p id="hamburger-close">メニューを閉じる</p> 13 <ul class="hamburger-menu"> 14 <li>トップページ</li> 15 <li>店舗情報</li> 16 <li>会社概要</li> 17 <li>ご注文・お問い合わせ</li> 18 </ul> 19 </div> 20</nav>

css

1/*メニュー本体(抜粋)*/ 2#nav-prac-sp-hamburger { 3 display: none; 4 position: absolute; 5 top: 0; 6 left: 0; 7 z-index: -1; 8 background-color: black; 9 color: white; 10 position: fixed; 11 z-index: 99; 12 width: 100%; 13 height: 100vh; 14 box-sizing: border-box; 15 margin: 0; 16 background: rgba(0, 0, 0, 0.95); 17 font-size: 20.8px; 18 } 19 20/*メニュー開閉操作*/ 21 #nav-prac-sp-hamburger.open { 22 display: block; 23 z-index: 99; 24 animation: showNav .5s ease 0s 1 normal; 25 } 26 #nav-prac-sp-hamburger.close { 27 display: block; 28 opacity: 0; 29 animation: hideNav .5s ease 0s 1 normal; 30 } 31 32 @keyframes showNav { 33 0% { 34 opacity: 0; 35 } 36 100% { 37 opacity: 1; 38 } 39 } 40 41 @keyframes hideNav { 42 0% { 43 opacity: 1; 44 z-index: 99; 45 } 46 100% { 47 opacity: 0; 48 z-index: -1; 49 } 50 } 51

Javascript

1 //ハンバーガーボタン 2 var hamBtn = document.getElementById('hamBtn'); 3 //メニューを閉じるボタン 4 var hamburgerClose = document.getElementById('hamburger-close'); 5 6 7 //メニューを開く関数 8function open() { 9 //ハンバーガーメニュー自体 10 var hamburger = document.getElementById('nav-prac-sp-hamburger'); 11 //ハンバーガーメニューからcloseを除き, openを付与 12 hamburger.classList.remove('close'); 13 hamburger.classList.add('open'); 14 } 15 16function close() { 17 var hamburger = document.getElementById('nav-prac-sp-hamburger'); 18 //ハンバーガーメニューからopenを除き, closeを付与 19 hamburger.classList.remove('open'); 20 hamburger.classList.add('close'); 21 } 22 23 //ハンバーガーボタンを押すと開く 24hamBtn.addEventListener('click', open); 25hamburgerClose.addEventListener('click', close);

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

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

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

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

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

jun68ykt

2019/12/15 06:19

ご質問にCSSも追記したほうがよいかもしれません。
a10

2019/12/15 06:39

すみません、cssが抜けていました。質問文に追加いたしました。ご指摘感謝いたします。
jun68ykt

2019/12/15 09:58

スタイルの追加、ありがとうございます。回答しました。参考になれば幸いです。
guest

回答1

0

ベストアンサー

スタイルの以下の3箇所を修正してみると、いかがでしょうか?

(1) #nav-prac-sp-hamburger のスタイルに含まれる z-index: -1; をコメントアウト
(2) #nav-prac-sp-hamburger のスタイルに含まれる z-index: 99; をコメントアウト
(3) #nav-prac-sp-hamburger.close のスタイルに、 z-index: -1; を追加

以下は、ご質問に挙げられている HTML, CSS, javascript を転記し、かつ、スタイルについては上記3点の修正をしたものです。(※logonav.pngのリンクは本題と関係ないので、HTMLをコメントアウトしています。)

投稿2019/12/15 09:57

jun68ykt

総合スコア9058

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

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

a10

2019/12/15 14:04

無事に動作しました!わかりやすいご回答本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問