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

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

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

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

jQuery

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

HTML

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

CSS

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

Q&A

解決済

1回答

3855閲覧

ハンバーガーメニューが勝手に閉じる

seakai

総合スコア24

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

レスポンシブWebデザイン

レスポンシブWebデザイン(RWD)は、スクリーンのサイズ、プラットフォーム、オリエンテーションに基づいて様々なデバイスで最適のサイトを生成するのウェブデザインとその開発のアプローチ方法を呼びます。

jQuery

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/04/30 05:49

前提・実現したいこと

検証ツールのレスポンシブで確認してもハンバーガーメニューが勝手に閉じないようにしたい。

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

検証ツールを使わず画面サイズを小さくして確認するとハンバーガーメニューは普通に開閉できます。
検証ツール(例えば320px)では一瞬開くのですが、すぐに勝手に閉じます。

(検証ツールを使わなくても時々同様の問題が起きますが、スーパーリロードをすると戻ります。)

該当のソースコード

html

1<header class="header"> 2 <div class="header_logo"> 3 <a href=""> 4 <img src="img/logo (2).svg" alt="Engress"> 5 </a> 6 </div> 7 <nav class="header_nav" id="header_nav"> 8 <nav class="header-sp-nav"> 9 <ul class="header-sp-menu"> 10 <li class="header-sp-menu-list"><a href="">ホーム</a></li> 11 <li class="header-sp-menu-list"><a href="">お知らせ</a></li> 12 <li class="header-sp-menu-list"><a href="">ブログ</a></li> 13 <li class="header-sp-menu-list"><a href="">コース・料金</a></li> 14 </ul> 15 <div class="header_sp-btn-box"> 16 <a href=""> 17 <div class="square-request-btn header_sp-btn"> 18 <span class="square-request-btn-text"> 19 資料請求 20 </span> 21 </div> 22 </a> 23 <a href=""> 24 <div class="contact-btn header_sp-btn"> 25 <span class="contact-btn-text"> 26 お問い合わせ 27 </span> 28 </div> 29 </a> 30 </div> 31 </nav> 32 <div class="ham" id="ham"><a href=""> 33 <span class="ham-line ham-line1"></span> 34 <span class="ham-line ham-line2"></span> 35 <span class="ham-line ham-line3"></span> 36 </a></div> 37 <div class="black-bg" id="js-black-bg"></div> 38 <ul class="header_list"> 39 <li class="header_list-item"><a href="" class="p">ホーム</a></li> 40 <li class="header_list-item"><a href="" class="p">お知らせ</a></li> 41 <li class="header_list-item"><a href="" class="p">ブログ</a></li> 42 <li class="header_list-item"><a href="" class="p">コース・料金</a></li> 43 </ul> 44 <div class="header_right"> 45 <div class="tel-box"> 46 <small class="tel-hour">平日08:00〜20:00</small> 47 <p class="tel-number"><a href="tel:0123-456-7890" class="p">0123-456-7890</a></p> 48 </div> 49 <a href=""> 50 <div class="square-request-btn header_pc-btn"> 51 <span class="square-request-btn-text"> 52 資料請求 53 </span> 54 </div> 55 </a> 56 <a href=""> 57 <div class="contact-btn header_pc-btn"> 58 <span class="contact-btn-text"> 59 お問い合わせ 60 </span> 61 </div> 62 </a> 63 </div> 64 </nav> 65 </header>

scss

1//style.scss 2 3@charset 'utf-8'; 4 5/* 6html5doctor.com Reset Stylesheet 7v1.6.1 8Last Updated: 2010-09-17 9Author: Richard Clark - http://richclarkdesign.com 10Twitter: @rich_clark 11*/ 12 13... 14 15// reset CSS ここまで 16 17@function vw($width, $px) { 18 @return $px / $width * 100vw; 19} 20 21@function vh($height, $px) { 22 @return $px / $height * 100vh; 23} 24 25$bpc: 1600px; //PC大画面 26$spc: 1280px; // PC通常 27$ipad: 768px; // iPad 28$sp: 375px; // スマホ 29 30@mixin sp { 31 @media screen and (min-width: $sp) { 32 @content; 33 } 34} 35 36@mixin ipad { 37 @media screen and (min-width: $ipad) { 38 @content; 39 } 40} 41 42@mixin spc { 43 @media screen and (min-width: $spc) { 44 @content; 45 } 46} 47 48@mixin bpc { 49 @media screen and (min-width: $bpc) { 50 @content; 51 } 52} 53 54$navyBlue: #1B224C; 55$yellowOrange: #F5A623; 56$thinGray: #D5D5D5; 57$moreThinGray: #F8F8F8; 58$white: #FFFFFF; 59 60html { 61 font-size: 62.5%; 62 /* -> 10px; */ 63} 64 65body { 66 font-family: "游ゴシック体", "游ゴシック", "Yu Gothic", "YuGothic", "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif; 67} 68 69h1 { 70 font-size: 4rem; 71 font-weight: bold; 72 line-height: 1.3; 73 color: $navyBlue; 74 75 @include spc { 76 font-size: 4.8rem; 77 line-height: 1.4; 78 } 79} 80 81h2 { 82 font-weight: bold; 83 line-height: 1.4; 84 font-size: 2.1rem; 85 color: $navyBlue; 86 87 @include spc { 88 font-size: 3.6rem; 89 } 90} 91 92h3 { 93 font-size: 2rem; 94 font-weight: bold; 95 line-height: 1.7; 96 color: $navyBlue; 97 98 @include spc { 99 font-size: 3.2rem; 100 } 101} 102 103h4 { 104 font-weight: bold; 105 line-height: 1.5; 106 font-size: 1.8rem; 107 color: $navyBlue; 108 109 @include spc { 110 font-size: 2.6rem; 111 } 112} 113 114h5 { 115 font-size: 1.8rem; 116 font-weight: 200; 117 line-height: 1.5; 118 color: $navyBlue; 119 120 @include spc { 121 line-height: 1.7; 122 } 123} 124 125p, 126.p { 127 font-size: 1.5rem; 128 font-weight: 200; 129 line-height: 1.5; 130 color: $navyBlue; 131 132 @include spc { 133 134 line-height: 1.7; 135 font-size: 1.6rem; 136 } 137} 138 139small { 140 font-size: 1.2rem; 141 font-weight: 200; 142 line-height: 1.7; 143 color: $navyBlue; 144} 145 146a { 147 text-decoration: none; 148 149 &:hover { 150 opacity: .8; 151 } 152} 153 154ul { 155 list-style: none; 156} 157 158.smallDone { 159 display: block; 160 161 @include spc { 162 display: none; 163 } 164} 165 166.smallNone { 167 display: none; 168 169 @include spc { 170 display: block; 171 } 172} 173 174.container { 175 margin: 0 auto; 176 max-width: 1600px; 177 width: 90%; 178 179 @include ipad { 180 width: vw(1280, 900); 181 } 182} 183

scss

1//header.scss 2 3@charset "utf-8"; 4 5@import 'style.scss'; 6 7.header { 8 display: flex; 9 align-items: center; 10 height: 5rem; 11 position: fixed; 12 background-color: $white; 13 width: 100%; 14 15 @include ipad { 16 height: 8rem; 17 } 18} 19 20.header_logo { 21 margin: auto 0; 22 margin-left: .5rem; 23 24 @include ipad { 25 margin-left: 1.5rem; 26 } 27 28 a { 29 img { 30 width: 10rem; 31 height: auto; 32 33 @include ipad { 34 width: 13.6rem; 35 height: 2.7rem; 36 } 37 } 38 } 39} 40 41.header_nav { 42 margin-left: auto; 43 display: flex; 44 align-items: center; 45 46 @include spc { 47 width: 100%; 48 } 49} 50 51.header-sp-nav { 52 width: 100%; 53 max-width: 250px; 54 height: 100%; 55 background-color: $navyBlue; 56 position: fixed; 57 top: 0; 58 right: 0; 59 z-index: 10; 60 transform: translate(250px); 61 transition: all .5s; 62} 63 64.header-sp-nav.open { 65 transform: translate(0); 66} 67 68.header-sp-menu { 69 // padding-top: 5rem; 70 71 @include ipad { 72 // padding-top: 8rem; 73 } 74} 75 76.header-sp-menu-list { 77 margin: 5rem 4rem; 78 79 a { 80 color: $white; 81 font-size: 1.6rem; 82 font-weight: bold; 83 } 84} 85 86.header_sp-btn-box { 87 display: flex; 88} 89 90.header_sp-btn { 91 display: flex; 92 justify-content: center; 93 align-items: center; 94 width: 10rem; 95 height: 4rem; 96 background-color: $yellowOrange; 97 margin-left: 2rem; 98 99 @include spc { 100 display: none; 101 } 102} 103 104.ham { 105 width: 4em; 106 height: 4em; 107 cursor: pointer; 108 position: relative; 109 z-index: 20; 110 111 @include spc { 112 display: none; 113 } 114} 115 116.ham-line { 117 position: absolute; 118 left: 1em; 119 width: 2em; 120 height: 0.2em; 121 background-color: $navyBlue; 122 transition: all 0.3s; 123} 124 125.ham-line.open { 126 background-color: $white; 127} 128 129.ham-line1 { 130 top: 1em; 131} 132 133.ham-line1.open { 134 transform: rotate(45deg); 135 top: 2em; 136} 137 138.ham-line2 { 139 top: 1.8em; 140} 141 142.ham-line2.open { 143 width: 0; 144} 145 146.ham-line3 { 147 top: 2.6em; 148} 149 150.ham-line3.open { 151 transform: rotate(-45deg); 152 top: 2em; 153} 154 155.black-bg { 156 position: fixed; 157 left: 0; 158 top: 0; 159 width: 100vw; 160 height: 100vh; 161 z-index: 5; 162 background-color: #000; 163 opacity: 0; 164 visibility: hidden; 165 transition: all .6s; 166 cursor: pointer; 167} 168 169.black-bg.open { 170 opacity: .8; 171 visibility: visible; 172} 173 174.header_list { 175 176 @include spc { 177 display: flex; 178 } 179} 180 181.header_list-item { 182 display: none; 183 184 @include spc { 185 display: block; 186 margin-left: 2.8rem; 187 font-weight: bold; 188 line-height: 1.8; 189 } 190 191 a { 192 color: $navyBlue; 193 } 194} 195 196.header_right { 197 display: none; 198 margin-left: auto; 199 200 @include spc { 201 display: flex; 202 } 203} 204 205.tel-box { 206 207 @include spc { 208 margin-right: 1.4rem; 209 } 210} 211 212.tel-hour { 213 color: $navyBlue; 214} 215 216.tel-number { 217 218 a { 219 color: $navyBlue; 220 221 &::before { 222 content: ''; 223 display: inline-block; 224 background-image: url(../img/tel29.svg); 225 background-repeat: no-repeat; 226 background-position: center right; 227 width: 3rem; 228 height: 3rem; 229 margin-right: .5rem; 230 margin-bottom: .3rem; 231 vertical-align: middle; 232 } 233 234 @include spc { 235 font-weight: bold; 236 } 237 } 238} 239 240.header_pc-btn { 241 display: none; 242 243 @include spc { 244 display: flex; 245 justify-content: center; 246 align-items: center; 247 width: 14rem; 248 height: 5rem; 249 margin-right: 1rem; 250 } 251} 252 253.square-request-btn { 254 font-size: 1.4rem; 255 line-height: 1.7; 256 font-weight: bold; 257 border-radius: .5rem; 258 background-color: $yellowOrange; 259 color: $white; 260} 261 262.contact-btn { 263 font-size: 1.4rem; 264 font-weight: bold; 265 line-height: 1.7; 266 border-radius: .5rem; 267 color: $white; 268 269 @include spc { 270 background-color: $navyBlue; 271 } 272} 273

jQuery

1$(function () { 2 3 //ハンバーガーメニュー開閉 4 $('.ham').on('click', function () { 5 $('#js-black-bg').toggleClass('open'); 6 $('.header-sp-nav').toggleClass('open'); 7 $('.ham-line, .ham-line1, .ham-line2, .ham-line3').toggleClass('open'); 8 }); 9 10 //ハンバーガーメニューのナビリンククリック後自動で閉じる 11 $('.header-sp-menu-list a').on('click', function () { 12 $('.ham').click(); 13 }); 14 15 //背景とhamクリックで閉じる 16 $('.ham, .black-bg').on('click', function () { 17 if ($(this).hasClass("open")) { 18 $('.ham').click(); 19 } 20 }); 21});

試したこと

スーパーリロードをした。

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

scssとjQueryを使っています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

一瞬開くのですが、すぐに勝手に閉じます。

<a href="">に反応してページ遷移してしまっているのが、原因だと思います。クリックする位置の微妙な違いにより発生したりしなかったりしますね。

ひとまず、href属性値を"#"などに変えれば回避できると思います。

投稿2021/04/30 07:43

gpsoft

総合スコア1323

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

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

seakai

2021/04/30 07:51

できました!! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問