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

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

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

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

jQuery

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

HTML

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

CSS

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

Q&A

解決済

1回答

4043閲覧

ハンバーガーメニューの領域外をタップ時に閉じる処理

kumeshin510

総合スコア2

JavaScript

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

jQuery

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/09/30 07:45

編集2021/09/30 08:12

前提・実現したいこと

今回初めての質問させていただきます。

ポートフォリオ作成のため、1つ目の作品を作成中です。
ハンバーガーメニューを実装することはできたのですが、ユーザビリティの観点からメニューの領域外をクリックしたときでもメニューが閉じる処理をさせたいと思っています。

headerの後に、divを用意してその領域がクリックされたらハンバーガーメニューのinputのチェックが外れるというような処理ができたらと思います。

もしくは、こういった記述のほうが分かりやすい、といったものがありましたがご意見いただきたいです。

![イメージ説明

該当のソースコード

HTML

1<head> 2<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> 3<script type="text/javaScript" src="js/script.js"></script> 4 5<title>FUKU茶屋</title> 6</head> 7 8<body class="full-page"> 9 <!------------------ 10 ヘッダー 11 -------------------> 12 <header class="site-header"> 13 <a href="#"> 14 <img src="img/logo1-white.png" alt="店ロゴ1"> 15 </a> 16 17 <!-- ハンバーガーメニューボタン --> 18 <div class="hamburger-menu"> 19 <input id="menu-btn-check" type="checkbox"> 20 <label class="menu-btn" for="menu-btn-check"> 21 <span></span> 22 </label> 23 24 <!-- ナビゲーションリスト --> 25 <nav class="header-nav"> 26 <ul class="nav-list"> 27 <li class="nav-item"> 28 <a class="nav-item__link" href="#about-cafe"><span>FUKU茶屋について</span></a> 29 </li> 30 <li class="nav-item"> 31 <a class="nav-item__link" href="#cafe-address"><span>店舗情報</span></a> 32 </li> 33 <li class="nav-item"> 34 <a class="nav-item__link" href="#price"><span>料金</span></a> 35 </li> 36 <li class="nav-item"> 37 <a class="nav-item__link" href="#"><span>フクロウの紹介</span></a> 38 </li> 39 <li class="nav-item"> 40 <a class="nav-item__link" href="#"><span>お問い合わせ</span></a> 41 </li> 42 </ul> 43 </nav> 44 </div> 45 </header> 46 47 <!-- ハンバーガーメニュー領域外をクリックして閉じる--> 48 <div class="close-content"></div>

CSS

1@charset "utf-8"; 2* { 3 margin: 0; 4 padding: 0; 5 box-sizing: border-box; 6 font-family: 'Rounded M+ 1p regular', 'Rounded M+ 1p', 'Rounded M+ 1p medium', 'Rounded M+ 1p bold'; 7} 8 9html { 10 scroll-behavior: smooth; 11} 12 13a { 14 text-decoration: none; 15} 16 17body { 18 background-color: #FFF5E2; 19} 20 21h1 { 22 font-family: m-plus-rounded-1p, sans-serif; 23 font-weight: 500; 24 font-style: normal; 25 border-bottom: 1px solid #4D362B; 26 font-size: 1.5em; 27 margin-bottom: 10px; 28} 29 30li { 31 list-style: none; 32} 33 34a, 35p { 36 font-family: m-plus-rounded-1p, sans-serif; 37 font-weight: 400; 38 font-style: normal; 39 font-size: 1em; 40} 41 42.site-main { 43 margin: 0, 20px; 44} 45 46 47/*———————————————— 48ヘッダー 49————————————————*/ 50.site-header { 51 width: 100%; 52 height: 60px; 53 background-color: #654A3C; 54 display: flex; 55 align-items: center; 56 position: fixed; 57 top: 0; 58 left: 0; 59 z-index: 10; 60} 61 62.site-header a { 63 display: flex; 64 align-items: center; 65 width: 190px; 66 height: 60px; 67 margin-left: 10px; 68 z-index: 30; 69} 70 71.site-header img { 72 width: 100%; 73} 74 75 76/*———————————————— 77ハンバーガーメニューの装飾 78————————————————*/ 79#menu-btn-check { 80 display: none; 81} 82 83.menu-btn { 84 position: fixed; 85 top: 7px; 86 right: 10px; 87 display: flex; 88 height: 46px; 89 width: 46px; 90 justify-content: center; 91 align-items: center; 92 z-index: 30; 93 border: 2px solid white; 94 border-radius: 8px; 95} 96 97.menu-btn span, 98.menu-btn span:before, 99.menu-btn span:after { 100 content: ''; 101 display: block; 102 height: 2px; 103 width: 25px; 104 border-radius: 2px; 105 background-color: #ffffff; 106 position: absolute; 107} 108 109.menu-btn span:before { 110 bottom: 8px; 111} 112 113.menu-btn span:after { 114 top: 8px; 115} 116 117#menu-btn-check:checked~.menu-btn span { 118 background-color: rgba(255, 255, 255, 0); 119} 120 121#menu-btn-check:checked~.menu-btn span::before { 122 bottom: 0; 123 transform: rotate(45deg); 124} 125 126#menu-btn-check:checked~.menu-btn span::after { 127 top: 0; 128 transform: rotate(-45deg); 129} 130 131#menu-btn-check:checked~.header-nav { 132 left: 0; 133} 134 135 136/*———————————————— 137ナビゲーション(SP) 138————————————————*/ 139.header-nav { 140 width: 100%; 141 height: auto; 142 position: fixed; 143 top: 0; 144 left: 100%; 145 z-index: 20; 146 background-color: #654A3C; 147 text-align: center; 148 transition: all 0.3s; 149} 150 151.header-nav ul li a { 152 display: block; 153 width: 100%; 154 font-size: 15px; 155 box-sizing: border-box; 156 color: #ffffff; 157 text-decoration: none; 158 padding: 15px; 159 position: relative; 160} 161 162.header-nav ul li a::before { 163 content: ""; 164 width: 7px; 165 height: 7px; 166 border-top: solid 2px #ffffff; 167 border-right: solid 2px #ffffff; 168 transform: rotate(45deg); 169 position: absolute; 170 right: 11px; 171 top: 16px; 172} 173 174/*ナビゲーション 領域外の装飾*/ 175 176.close-content { 177 width: 100%; 178} 179 180

JavaScript

1// ハンバーガーメニューを閉じる 2$(function() { 3 $('.nav-list a').on('click', function(event) { 4 $('#menu-btn-check').prop('checked', false); 5 }); 6}); 7 8// ハンバーガーメニュー領域外をクリックで閉じる 9

試したこと

JavaScriptについては勉強不足なので、以下のサイトを参考にしてクラス名などを変更して記述してみたのですがそもそもの実装方法が自分のものと異なるため混乱してしまいました。
リンク内容
リンク内容

以下のように記述しましたが、そもそもクラスの付与を行って実装しているものではないので、見当違いのコードを記述をしていました。
この部分は参考にならないため無視していただいて構いません。

JavaScript

1var nav = $('.header-nav'); 2$('.close-content').click(function() { 3 if (nav.hasClass('open')) { 4 $('.header-nav').removeClass('open'); 5 } 6});

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

OS:macOS Big Sur 11.5.2
ツール:Visual Studio Code 1.60.2

教材やwebの情報をみながら初めて作成しているので、コードの効率の悪さなどがあり非常に回答者様側からしたら見にくくなっております。大変申し訳ございません。

何卒お力添えのほどお願いいたします。

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

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

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

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

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

Lhankor_Mhy

2021/09/30 07:51

「うまくいきませんでした」とは何が起きていますか? また、どのようなコードを書いたのですか? ソースコードを書きましょう https://teratail.com/help/question-tips#questionTips3-5-1 結果(実際に起きたこと)を書きましょう https://teratail.com/help/question-tips#questionTips3-4-1 エラーメッセージや実行ログをコピー&ペーストしましょう https://teratail.com/help/question-tips#questionTips3-4-2
guest

回答1

0

ベストアンサー

チェックボックスの状態でメニュー表示を管理しているようですから、チェックボックスの状態を変えるように変更をするといいでしょう。
たとえば:

js

1 $('.close-content').click(function () { 2 $('#menu-btn-check').prop('checked', false); 3 });

投稿2021/10/01 02:10

Lhankor_Mhy

総合スコア36158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問