前提・実現したいこと
jQueryでスマホ向けのレスポンシブでアイコンをクリックするとメニューが表示され、アイコンが×に書き換わり、
もう一度クリックするとメニューが非表示になり、アイコンが元に戻る
ハンバーガーメニューを作成しています。
初回のクリックでメニューが正しく表示され、アイコンも変更されるところまでは確認できていますが、
2回目のメニューを閉じるクリックで
slideUpした瞬間、再度slideDownしてしまい、非表示になりません。
アイコンはFont Awesomeのものを使用しています。
1回のクリックで1つの処理しか行えないようにできたらいいのですが、解決に至りませんでした。
皆様の知恵を貸していただければと思い、質問させていただきました。
JavaScript(jQuery)を学習してから初めてページをつくっているという状況なので、拙い文章ですがお許しください。
また、不明瞭な点などがございましたら追記いたしますので、よろしくお願いいたします。
特にエラーメッセージは表示されていませんが、以下の文が表示されましたのでご参照ください。
A cookie associated with a cross-site resource at http://bit.ly/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details
該当のソースコード
HTML
1 <header> 2 <div class="container"> 3 ⋮ 4 <div class="header-right"> 5 ⋮ 6 <div id="menu-icon"> 7 <i class="fa fa-bars"></i> 8 </div> 9 </div> 10 </div> 11 </header> 12 <div id="menu-wrapper"> 13 <a href="#ability-btn">ability</a> 14 <a href="#message-btn">message</a> 15 <a href="#sns-btn">SNS</a> 16 </div>
CSS
1#menu-icon { 2 display: none; 3} 4 5#menu-wrapper { 6 display: none; 7 float: right; 8 width: 120px; 9 height: 175px; 10 background-color: rgba(255, 255, 255, 0.8); 11 z-index: 10; 12 position: fixed; 13 top: 50px; 14 right: 0; 15 flex-direction: column; 16 border-radius: 0 0 0 10px; 17} 18 19#menu-wrapper a { 20 font-size: 28px; 21 color: #5d5d63; 22 font-family: 'EB Garamond', serif; 23 text-decoration: none; 24 padding-left: 20px; 25 padding: 10px 0 10px 20px; 26} 27 28@media screen and (max-width: 670px) { 29 #menu-icon { 30 float: right; 31 display: block; 32 padding: 0 20px; 33 line-height: 50px; 34 } 35 36 #menu-icon:hover { 37 cursor: pointer; 38 background-color: #a3a668; 39 } 40} 41
JavaScript
1 $('#menu-icon').click(function(){ 2 if($('#menu-wrapper').css('display','none')) { 3 $('#menu-wrapper').slideDown(200).css('display', 'flex'); 4 $('#menu-icon').html('<i class="fa fa-times"></i>'); 5 }else if($('#menu-wrapper').css('display','flex')){ 6 $('#menu-wrapper').slideUp(200).css('display', 'none'); 7 $('#menu-icon').html('<i class="fa fa-bars"></i>'); 8 }else{;} 9 });
試したこと
click()をone()に変えてみたりしましたが、2回目の閉じるためのクリックができないので解決しませんでした。
補足情報(FW/ツールのバージョンなど)
使用エディタ:Atom
環境:Windows10、chrome
回答2件
あなたの回答
tips
プレビュー