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

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

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

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

jQuery

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

CSS

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

Q&A

1回答

3232閲覧

ハンバーガーメニューが開いたままになっている・レスポンシブ

B_J

総合スコア15

HTML5

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

jQuery

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

CSS

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

0グッド

1クリップ

投稿2021/07/09 14:04

もうお手上げです。
レスポンシブ対応画面を作っています。
ハンバーガーメニューをclickしたら、バツ印になるってとこまでできました。

しかし、デフォルトの状態が、バツ印の状態です。
clickしたらハンバーガーメニューに戻ります。

当然ですが、やりたいことは逆なんです。
デフォルトがハンバーガーメニューで、clickしたらバツ印になるようにしたいんです。

宜しくお願いします。

html

1 <div id="drawer_toggle" class="open"> 2 <span></span> 3 <span></span> 4 <span></span> 5 </div> 6 7<script> 8 $(function () { 9 $("#drawer_toggle").click(function () { 10 $(this).toggleClass("open"); 11 $("#global_nav").slideToggle(230); 12 }); 13 }); 14 </script> 15

css

1 .header { 2 #drawer_toggle { 3 z-index: 200; 4 box-sizing: border-box; 5 position: absolute; 6 top: 0; 7 right: 0; 8 display: inline-block; 9 width: 50px; 10 height: 50px; 11 } 12 #drawer_toggle:hover { 13 //ホバー時にテキストの色やカーソルを変える 14 cursor: pointer; 15 } 16 17 18 #drawer_toggle span { 19 position: absolute; 20 top: 19px; 21 left: 17px; 22 display: inline-block; 23 width: 23px; 24 height: 2px; 25 border-radius: 2px; 26 background-color: #2498b3; 27 vertical-align: top; 28 } 29 30 #drawer_toggle span:nth-child(2) { 31 margin-top: 10px; 32 } 33 #drawer_toggle span:last-child { 34 margin-top: 20px; 35 } 36 #drawer_toggle.open { 37 background-color: #2498b3; 38 } 39 40 #drawer_toggle.open span { 41 top: 24px; 42 left: 14px; 43 width: 23px; 44 margin: 0; 45 } 46 #drawer_toggle.open span:first-child { 47 transform: rotate(45deg); 48 background-color: #fff; 49 } 50 #drawer_toggle.open span:nth-child(2) { 51 display: none; 52 } 53 #drawer_toggle.open span:last-child { 54 transform: rotate(-45deg); 55 background-color: #fff; 56 } 57 58 #global_nav { 59 display: none; 60 position: absolute; 61 top: 50px; 62 width: 100%; 63 //@include hamburger{ 消去 64 display: block; 65 //}; 消去 66 }

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

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

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

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

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

BeatStar

2021/07/10 02:31

解決したのなら『ベストアンサー』を選びましょう。
guest

回答1

0

<div id="drawer_toggle" class="open">

class="open"を消しましょう。

#global_nav {
display: none;
position: absolute;
top: 50px;
width: 100%;
//@include hamburger{ 消去
display: block;
//}; 消去
}

display: block;を消しましょう。

投稿2021/07/09 14:34

itagagaki

総合スコア8402

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

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

B_J

2021/07/09 14:45

本当にありがとうございます。 解決できましたが、なにがなんだか、なぜなのか全く分かりません。。 お時間いただきまして、大変申し訳ございませんが、詳しくご説明・ご解説を賜れますでしょうか?? 何卒よろしくお願い申し上げます。
itagagaki

2021/07/09 15:08

ご自身で書かれたコードではないのですか?? ハンバーガーとバツの切り替えは id="drawer_toggle" のdiv要素に、JQueryでクラス "open" をトグル(付けたり外したり)することで行っていますね。"open" が付いた状態ではバツが、ついていない状態ではハンバーガーが表示されるようにCSSでデザインされていますね。初期状態で表示をハンバーガーにしたいのなら、そのdiv要素の初期状態は "open" クラスが付いていない状態にすればいいわけですよね。 そして、メニュー項目については id="global_nav" の要素を jQuery の slideToggle で表示する/隠すを切り替えていますね。初期状態では隠しておきたいのだからCSSで display: none; にしておけばよいのですが(そしてそれが書かれていますが、その下に) display: block; が書かれているので、それでは最初から表示状態になってしまいます。
B_J

2021/07/09 15:41 編集

ありがとうございます。 サイトやYouTubeを参考にして書きましたので、理解が足りなかったと思います。 メニュー設定もして、ハンバーガーメニューをクリックすると、メニューが表示されるように出きました。 今日は寝て明日、整理してみます。感謝感激雨嵐です。
B_J

2021/07/10 00:37 編集

おはようございます。 openのクラスでは×、ついていない時はハンバーガーとCSSで設定➡ここまでは分かります。 初期状態で表示をハンバーガーにしたいのなら、そのdiv要素の初期状態は "open" クラスが付いていない状態にすればいい➡これでhtmlのクラスからopenを削除したことで、なぜうまくいくのかいまいちぴんときません。これを削除しちゃうと、CSSで設定している、.openなどは影響を受けないのでしょうか? いまいち分かっておらずすみません。。
itagagaki

2021/07/10 02:06

> htmlのクラスからopenを削除 htmlのクラスではありません。div要素から"open"クラスを削除です。 http://www.jquerystudy.info/reference/attributes/toggleClass.html こちらを参照してください。 > toggleClassは指定したクラスをトグル処理(クラスが有る場合はクラスを削除し、無い場合はクラスを追加します)します。 プログラムを書く以上は、使う関数のリファレンスくらいはちゃんと読んで理解してコーディングしましょう。
B_J

2021/07/10 02:59 編集

ありがとうございます。URLもありがとうございます、拝見しました。 ということは、コード上、openというクラスが「有る」今回のような場合は、クラスを削除ということですよね? 今回の私の場合だと、クラスopenがあるので、 クリックすることで、openクラスが削除される=openではない状態=ハンバーガーメニュー ➡クリックするとハンバーガーメニューの状態になる ということではないのでしょうか? でも、クリックすると、ハンバーガーメニュー「ではない」状態にしたのですよね? それと、htmlの中のclassを削除したこととの関係はどういうことなのでしょうか? このあたりがいまいち理解できないです。ご教示のほどよろしくお願いします。
B_J

2021/07/10 03:20 編集

あ、すみません、もう一度考えました。 クラスというのは、htmlの中にあるdivのクラスのことですかね?そうするとしっくりきました。 つまり、今回はもともとopenクラスの記載が「有った」からこそ、 クリックするとopenが削除=openではない状態=ハンバーガー➡つまり、クリックするとハンバーガーメニューになる=今回の悩み しかし、教えて頂いた通り、html内にあるdivクラスにあるopenをそもそも削除=クリックするとopenを追加➡つまり、クリックするとハンバーガーが開く状態になる ということですかね?
itagagaki

2021/07/10 03:59

まあ、大体合っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問