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

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

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

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

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

Q&A

解決済

1回答

1715閲覧

ページ内遷移した際にドロワーメニューを閉じたい

tacchanss

総合スコア3

HTML5

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

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

0グッド

0クリップ

投稿2020/06/25 22:06

前提・実現したいこと

スマホ用にドロワーメニューを作成しましたが、
ページ内遷移したリンクの場合(#のリンク)、ドロワーメニューが自動で閉じません。
リンククリック後に閉じるにはどのようなJacaScriptを組めばよいでしょうか?

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

リンク内にページが閉じない

該当のソースコード

HTML

1<div id="nav-drawer"> 2 <input id="nav-input" type="checkbox" class="nav-unshown"> 3 <label id="nav-open" for="nav-input"><i class="fa fa-bars" aria-hidden="true"></i>MENU</label> 4 <label class="nav-unshown" id="nav-close" for="nav-input">×<br>閉じる</label> 5 6 <div id="nav-content"> 7 8 <div class="main_menu"> 9 <nav> 10 <ul> 11 <li> 12 <a href="http://aaaaa.com/page1" title="ページ1">ページ1</a> 13 <div class="tree_menu"> 14 <ul> 15 <li><a href="https://aaaaaa.com/page1/#guide" title="ガイド">ガイドへ</a></li> 16 <li><a href="https://aaaaaa.com/page1/#guide" title="ガイド">ガイドへ</a></li> 17 <li><a href="https://aaaaaa.com/page1/#guide" title="ガイド">ガイドへ</a></li> 18 </ul> 19 </div> 20 21 </li> 22 <li> 23 <a href="https://aaaaaa.com/page2" title="ページ2">ページ2</a> 24 <div class="tree_menu three_clm"> 25 <ul> 26 <li> 27 <ul> 28 <li><a class="parent" href="https://aaaaaa.com/page2/child/" title="">子ページ</a></li> 29 <li><a href="https://aaaaaa.com/page2/child/#info" title="情報">情報</a></li> 30 <li><a href="https://aaaaaa.com/page2/child/#info" title="情報">情報</a></li> 31 <li><a href="https://aaaaaa.com/page2/child/#info" title="情報">情報</a></li> 32 </ul> 33 </li> 34 <li> 35 <ul> 36 <li><a class="parent" href="https://aaaaaa.com/page3/child/" title="">子ページ</a></li> 37 <li><a href="https://aaaaaa.com/page3/child/#info" title="情報">情報</a></li> 38 <li><a href="https://aaaaaa.com/page3/child/#info" title="情報">情報</a></li> 39 <li><a href="https://aaaaaa.com/page3/child/#info" title="情報">情報</a></li> 40 </ul> 41 </li> 42 <li> 43 <ul> 44 <li><a class="parent" href="https://aaaaaa.com/page4/child/" title="">子ページ</a></li> 45 <li><a href="https://aaaaaa.com/page4/child/#info" title="情報">情報</a></li> 46 <li><a href="https://aaaaaa.com/page4/child/#info" title="情報">情報</a></li> 47 <li><a href="https://aaaaaa.com/page4/child/#info" title="情報">情報</a></li> 48 </ul> 49 </li> 50 51 </ul> 52 </div> 53 </li> 54 55 </ul> 56 </nav> 57 </div> 58 </div><!-- nav-content --> 59</div>

CSS

1#nav-drawer { 2 position: relative; 3 z-index: 300; 4} 5 6/*チェックボックス等は非表示に*/ 7.nav-unshown { 8 display:none; 9} 10 11/*アイコンのスペース*/ 12#nav-open { 13 font-size: 16px; 14 background: #333; 15 border-radius: 5px; 16 padding: 5px 10px; 17 margin: 0px 10px; 18 font-weight: bold; 19 color: #FFF; 20 display: block; 21 top: 70px; 22 right: 1%; 23 position: fixed; 24 z-index: 20; 25} 26 27#nav-open i { 28 padding-right:10px; 29} 30 31/*閉じる用の薄黒カバー*/ 32#nav-close { 33 display: block;/*はじめは隠しておく*/ 34 position: fixed; 35 z-index: 600; 36 /*全体に広がるように*/ 37 width: 100%; 38 color: #FFF; 39 /*! padding: 2% 0; */ 40 text-align: center; 41 bottom: 110%; 42 -webkit-transition: .4s; 43 transition: .4s; 44 height: 10%; 45 background-color: rgba(0,0,0,0.85); 46} 47 48/*中身*/ 49#nav-content { 50 overflow: auto; 51 position: fixed; 52 top: 0; 53 z-index: 500;/*最前面に*/ 54 width: 100%;/*右側に隙間を作る*/ 55 height: 90%; 56 /*背景色*/ 57 transition: .3s ease-in-out;/*滑らかに表示*/ 58 -webkit-transform: translatey(-100%); 59 transform: translatey(-100%);/*左に隠しておく*/ 60 background-color: rgba(255,255,255,0.95); 61} 62 63/*チェックが入ったらもろもろ表示*/ 64#nav-input:checked ~ #nav-close { 65 /*カバーを表示*/ 66 bottom: 0%; 67} 68 69#nav-input:checked ~ #nav-content { 70 -webkit-transform: translatey(0%); 71 transform: translatey(0%);/*中身を表示*/ 72 box-shadow: 6px 0 25px rgba(0,0,0,.15); 73} 74 75#nav-content .main_menu{ 76 width:80%; 77 margin:20px auto 0; 78} 79 80#nav-content .main_menu a{ 81 color:#333; 82 display:block; 83 font-size: 1.6rem; 84 font-weight: 600; 85 padding-bottom: 10px; 86} 87 88#nav-content .main_menu .tree_menu{ 89 90 border-top: 1px solid #333; 91 padding: 10px 0 20px; 92} 93 94#nav-content .main_menu .tree_menu > ul{ 95 96 display: flex; 97 position: relative; 98 flex-wrap: wrap; 99 justify-content: space-around; 100} 101 102 103#nav-content .main_menu .tree_menu > ul > li > a{ 104 105 font-size: 1.4rem; 106 font-weight: 400; 107 text-decoration: underline; 108} 109 110 111#nav-content .main_menu .three_clm > ul > li >ul >li >a{ 112 113 font-size: 1.4rem; 114 font-weight: 400; 115 text-decoration: underline; 116} 117 118#nav-content .main_menu .three_clm .parent{ 119 font-size: 1.6rem; 120 text-decoration: none; 121 font-weight: 600; 122} 123 124 125### 補足情報(FW/ツールのバージョンなど) 126 127Wordpress 5.4.2

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

Wordpress 5.4.2

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

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

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

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

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

guest

回答1

0

ベストアンサー

まず、このモーダルの開閉の仕組みを確認しましょう。

HTML

1<input id="nav-input" type="checkbox" class="nav-unshown">

こちらの、チェックボックスがオンになると開き、
オフになると閉じるという動きをしています。

では、次にこのチェックボックスが閉まる関数を書いてみましょう。

JavaScript

1function closeNav() { 2 document.getElementById('nav-input').checked = false 3}

以下のページを参照してみてください。
<input type="checkbox"> - HTML: HyperText Markup Language | MDN

こちらを該当のaタグのonClick属性に挿入すればOKです。

HTML

1 <li><a href="#guide" title="ガイド" onClick="closeNav()">ガイドへ</a></li>

クリック時の処理(onClick) - イベント処理 - JavaScript入門

もっとシンプルな書き方もあります。
是非調べてみてください。

投稿2020/06/25 23:55

編集2020/06/29 08:19
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tacchanss

2020/06/26 20:35

ご回答ありがとうございます。 ご回答頂いた内容を入れたところ、リンクとして認識されなくなったのか、クリックしてもリンク先に飛ばないようになりました。 z-indexが被っているのかとも思いましたが、違うようです。 他に修正方法御座いますでしょうか? お力添え頂ければ幸いです。
退会済みユーザー

退会済みユーザー

2020/06/29 07:59

大変失礼しました。仕様上できないものでした。書き直します。
tacchanss

2020/06/30 22:34

ご教示頂きました内容で動きました。 この度はご回答頂きましてありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問