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

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

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

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

HTML

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

CSS

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

Q&A

解決済

3回答

8374閲覧

ハンバーガーメニュー 閉じない

ogiogi

総合スコア11

jQuery

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2018/04/18 08:07

編集2018/04/18 12:07

htmlサイトでスマホでハンバーガーメニューを設置して、動かしていたところ、実機と、検証ツールでスマホにして確認した時のみ、メニューが閉じません。
ブラウザ幅を小さくした時にはきちんととじるのですが。。。

//現状説明の追加
検証ツールでのスマホの表示と実機に対して、ブラウザをただ小さくして表示してみる事の違いは何でしょう。わかる方教えてください。
class="fixed open"であれば、メニューが表示され、class="fixed"であれば、表示はされず閉じた状態になります。

検証ツールでのスマホの表示と実機に対して、ブラウザをただ小さくして表示してみる事でのデベロッパーツール elementの違いは、class="fixed open"が書き換わらないところです。なぜ、書き換わらないのでしょう。×ボタンを押すときには書き換わります。

(function($) { $(function() { var $header = $('#top-head'); var $headera = $('#top-head a'); // Nav Fixed $(window).scroll(function() { if (window.innerWidth > 768) { if ($(window).scrollTop() > 300) { $header.addClass('fixed'); $headera.addClass('fixed'); } else { $header.removeClass('fixed'); $headera.removeClass('fixed'); } } else { $header.addClass('fixed'); $headera.addClass('fixed'); } }); // Nav Toggle Button $('#nav-toggle').click(function(){ $header.toggleClass('open'); }); // Nav Toggle Button close $('#global-nav ul a').on('click', function(){ if (window.innerWidth <= 768) { $('#nav-toggle').click(); } }); }); })(jQuery);

html

<link rel="stylesheet" media="screen and (max-width:640px)" href="hoge.css" > <header id="top-head"> <div class="inner clearfix"> <div id="mobile-head"> <div id="nav-toggle"> <div> <span></span> <span></span> <span></span> </div> </div> </div> <nav id="global-nav"> <ul> <li><a href="#next"><span>CONCEPT</span></a></li> <li><a href="#store"><span>STORE</span></a></li> <li><a href="#menu"><span>MENU</span></a></li> <li><a href="#map"><span>MAP</span></a></li> <li><a href="mailto:user@dammy.com?subject=サイトからの問い合わせ"><span>CONTACT</span></a></li> </ul> </nav> </div> </header> <script type="text/javascript" src="hoge.js"></script> コード

CSS

position: absolute; width: 100%; top: -100px; margin: 100px auto 0; padding: 30px 0 10px; background: rgba(255,255,255,.7); z-index: 999; } #top-head a, #top-head { color: #0F0F0F; text-decoration: none; } #top-head .inner { position: relative; } /* Fixed */ #top-head.fixed { margin-top: 0; top: 0; position: fixed; background-color: #0F0F0F; transition: top 0.65s ease-in; -webkit-transition: top 0.65s ease-in; -moz-transition: top 0.65s ease-in; } #top-head a.fixed { color: #F0F0F0; } #top-head .inner { position: relative; } /* Toggle Button */ #nav-toggle { display: none; } #nav-toggle div { position: relative; } #nav-toggle span { display: block; position: absolute; height: 4px; width: 100%; background: #F0F0F0; left: 0; -webkit-transition: 0.35s ease-in-out; -moz-transition: 0.35s ease-in-out; transition: 0.35s ease-in-out; } #nav-toggle span:nth-child(1) { top: 0; } #nav-toggle span:nth-child(2) { top: 11px; } #nav-toggle span:nth-child(3) { top: 22px; } #global-nav ul { position: absolute; right: 0; bottom: 0; } #global-nav ul li { float: left; font-size: 20px; letter-spacing: 0.1em; } #global-nav ul li a { padding-right: 30px; } #global-nav ul li a:hover { color:#D65050; } コード

スマホcss

#top-head, .inner { width: 100%; padding: 0; } #top-head { top: 0; margin-top: 0; } /* Fixed reset */ #top-head.fixed { padding-top: 0; background: transparent; } #top-head #global-nav ul li a, #top-head.fixed #global-nav ul li a { display: block; width: 100%; padding: 18px 0; font-size: 26px; color: #D65050; letter-spacing: 0.3em; } #top-head, .inner { width: 100%; padding: 0; } #mobile-head { background: #0F0F0F; width: 100%; height: 75px; z-index: 999; position: relative; } /* #global-nav スライドアニメーション */ .open #global-nav { /* #global-nav top + #mobile-head height */ -moz-transform: translateY(556px); -webkit-transform: translateY(556px); transform: translateY(556px); } #nav-toggle { display: block; position: absolute; right: 0px; width: 50px; height: 75px; padding: 25px 15px 0px 0px; cursor: pointer; z-index: 101; } /* #nav-toggle 切り替えアニメーション */ .open #nav-toggle span:nth-child(1) { top: 11px; -webkit-transform: rotate(315deg); -moz-transform: rotate(315deg); transform: rotate(315deg); } .open #nav-toggle span:nth-child(2) { width: 0; left: 50%; } .open #nav-toggle span:nth-child(3) { top: 11px; -webkit-transform: rotate(-315deg); -moz-transform: rotate(-315deg); transform: rotate(-315deg); } #global-nav { position: absolute; top: -500px; background: #333333; width: 100%; text-align: center; -webkit-transition: 0.5s ease-in-out; -moz-transition: 0.5s ease-in-out; transition: 0.5s ease-in-out; } #global-nav ul { list-style: none; position: static; right: 0; bottom: 0; font-size: 14px; } #global-nav ul li { float: none; position: static; border-top: #777777 1px solid; } #global-nav ul li:last-child { border-bottom: #777777 1px solid; } #top-head #global-nav ul li a, #top-head.fixed #global-nav ul li a { display: block; width: 100%; padding: 18px 0; font-size: 26px; color: #D65050; letter-spacing: 0.3em; } /* #global-nav スライドアニメーション */ .open #global-nav { /* #global-nav top + #mobile-head height */ -moz-transform: translateY(556px); -webkit-transform: translateY(556px); transform: translateY(556px); } コード

よろしくお願いいたします。

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

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

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

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

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

m.ts10806

2018/04/18 08:14

html ,cssをご提示ください。これだけでは再現確認がとれません。
m.ts10806

2018/04/18 08:29

「スマホCSS」とありますがどのように読み込ませているのでしょうか?css、javascriptの読み込み部分もhtmlに追記していただけますか?
guest

回答3

0

lang=javascript

1if (window.innerWidth <= 768) { 2 $('#nav-toggle').click(); 3}

が原因ではないですか??

この書き方だと一番最初に読み込まれたときでしかウィンドウサイズが取得できません。
検証ツールで見たときはtrue判定であってブラウザで表示したときは大きいからfalse判定、縮めても変わらずfalse判定なのでおもった通りの挙動にならないのでは??と思います。

あと、質問文に出てくる実機とはスマホデバイスの事でしょうか。
それともPCのブラウザの事でしょうか。

投稿2018/04/18 14:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ogiogi

2018/04/27 08:51 編集

easy_no_easy 様 実機とは、スマホデバイスの事です。 自己解決の欄に検証結果をのせました。ご回答、ありがとうございました。
guest

0

自己解決

<header>がhtml内にふたつあった事が原因でした。 私が添付したソースコードでは誰も解決できない所に問題がありました。 考えてくださった方々、すみませんでした。

余談ですが

if (window.innerWidth <= 768) {
$('#nav-toggle').click();
}

を削除して検証してみた所、スマホ、PC上で幅を狭くしたもののどちらもクリックでメニューが閉じなくなっていました。つまり、こちらのプログラムは動いているという事だと思います。

解決法を投稿してくださった方々、ありがとうございました。

投稿2018/04/27 08:49

編集2018/04/27 08:52
ogiogi

総合スコア11

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

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

0

動作検証していないので予測ですが、
ハンバーガーメニューを表示した後のボタンとメニューの重なり順はいかがでしょうか。
メニューは出るものの閉じないとの事なので、メニューがボタンの上に重なってはいないでしょうか。

投稿2018/04/18 11:23

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ogiogi

2018/04/18 12:02

ボタンをクリックした時に、メニューの下でリンクが移動しています。重なり具合ではないようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問