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

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

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

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

CSS

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

Q&A

解決済

2回答

3121閲覧

cssのみのハンバーガーメニューをクリックで閉じるようにしたい

namatama

総合スコア1

JavaScript

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

CSS

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

0グッド

0クリップ

投稿2020/07/08 01:38

編集2020/07/08 01:41

前提・実現したいこと

cssのみでのハンバーガーメニューを作成しています。
(参考 https://saruwakakun.com/html-css/reference/nav-drawer)
うまく実装できたのですが、リンクをクリックしたらメニューを閉じるという挙動を追加する場合、
どうすればいいかわかりません。

cssでもjavascriptでも構いませんので記述方法が分かりましたら
ご教授いただきたいです。

該当のソースコード

html

1<nav id="nav-drawer"> 2<input id="nav-input" type="checkbox" class="nav-unshown"> 3<label id="nav-open" for="nav-input"><span></span></label> 4<label class="nav-unshown" id="nav-close" for="nav-input"></label> 5<div id="nav-content"> 6<ul class="header_nav_ul"> 7<li class="header_nav_li"><a href="#menu1">メニュー1</a></li> 8<li class="header_nav_li"><a href="#menu2">メニュー2</a></li> 9<li class="header_nav_li"><a href="#menu3">メニュー3</a></li> 10 11</ul> 12</div> 13</nav>

css

1#nav-drawer { 2 position: relative; 3} 4/*チェックボックス等は非表示に*/ 5.nav-unshown { 6 display:none; 7} 8/*アイコンのスペース*/ 9#nav-open { 10 display: inline-block; 11 width: 30px; 12 height: 25px; 13 vertical-align: middle; 14} 15/*ハンバーガーアイコンをCSSだけで表現*/ 16#nav-open span, #nav-open span:before, #nav-open span:after { 17 position: absolute; 18 height: 3.5px;/*線の太さ*/ 19 width: 30px;/*長さ*/ 20 background: #cfa972; 21 display: block; 22 content: ''; 23 cursor: pointer; 24 right:0; 25} 26#nav-open span:before { 27 bottom: -10px; 28} 29#nav-open span:after { 30 bottom: -20px; 31} 32/*閉じる用の薄黒カバー*/ 33#nav-close { 34 display: none;/*はじめは隠しておく*/ 35 position: fixed; 36 z-index: 99; 37 top: 0;/*全体に広がるように*/ 38 left: 0; 39 width: 100%; 40 height: 100%; 41 background: black; 42 opacity: 0; 43 transition: .3s ease-in-out; 44} 45/*中身*/ 46#nav-content { 47 overflow: auto; 48 position: fixed; 49 top: 0; 50 right: 0; 51 z-index: 9999;/*最前面に*/ 52 width: 100%; 53 background: #000;/*背景色*/ 54 color:#fff; 55 transition: .3s ease-in-out;/*滑らかに表示*/ 56 -webkit-transform: translateX(105%); 57 transform: translateX(105%);/*左に隠しておく*/ 58 text-align: center; 59} 60.header_nav_li a{ 61 color: #fff; 62 padding: 10px 0; 63 display: inline-block; 64 font-size: 20px; 65 width: 100%; 66} 67.header_nav_li:not(:last-child){ 68 border-bottom: 1px solid; 69} 70 71/*チェックが入ったらもろもろ表示*/ 72#nav-input:checked ~ #nav-close { 73 display: block;/*カバーを表示*/ 74 opacity: .5; 75} 76#nav-input:checked ~ #nav-content { 77 -webkit-transform: translateX(0%); 78 transform: translateX(0%);/*中身を表示*/ 79 box-shadow: 6px 0 25px rgba(0,0,0,.15); 80} 81

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんにちは。
こういうことですか?

js

1document.querySelectorAll('a').forEach(e=>e.addEventListener('click', ()=>document.getElementById('nav-close').click()))

投稿2020/07/08 01:57

Lhankor_Mhy

総合スコア36960

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

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

namatama

2020/07/08 01:59

ありがとうございます! 無事思った通りになりました。
guest

0

CSS

1#nav-input:not(:checked) ~ #nav-content{display:none}

投稿2020/07/08 01:46

yambejp

総合スコア116724

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

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

namatama

2020/07/08 01:56

ご回答ありがとうございます。 こちらの記述ではできませんでした。 <a href="#menu1">メニュー1</a>をクリックするとメニューを非表示にしたいのですが 別の記述方法ありますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問