前提・実現したいこと
はじめまして。
現在meanmenuというレスポンシブ対応のドロワーメニューを使用しています。
うぇぶもようさんのサイト(https://webmoyou.com/web/703/)を参考にさせていただきました。
ドロワーの中にドロップダウン(アコーディオン)がありますが、ドロップダウンを開いたままクローズボタン(meanmenu-reveal)をクリックしたら、次にドロワーオープンしたときに閉じていて欲しいです。(現状は開けたままクローズすると次もドロップダウンは開いたままです。)
該当のソースコード
Javascript
1 $(function() { 2 //メニューの表示状態保管用 3 var state = false; 4 //.bodyのスクロール位置 5 var scrollpos = 0; 6 //meanmenuの状態による表示制御 7 function mm_control() { 8 if($('.mean-nav .nav').is(':visible')) { 9 //表示中 10 if(state == false) { 11 scrollpos = $(window).scrollTop(); 12 $('body').addClass('fixed').css({'top': -scrollpos}); 13 $('.mean-container').addClass('open'); 14 $('.mean-nav .mask').show(); 15 state = true; 16 } 17 } else { 18 //非表示中 19 if(state == true) { 20 $('body').removeClass('fixed').css({'top': 0}); 21 window.scrollTo( 0 , scrollpos ); 22 $('.mean-container').removeClass('open'); 23 $('.mean-nav .mask').hide(); 24 state = false; 25 } 26 } 27 } 28 29 $('#gNav').meanmenu({ 30 meanMenuContainer: "#header .h_nav", // メニューを表示させる位置 31 meanScreenWidth: "768" 32 }); 33 34 $(document) 35 .on('opend.meanmenu closed.meanmenu', function() { 36 mm_control(); 37 }) 38 .on('touchend click', '.mean-bar .mask', function(e) { 39 $('.mean-bar .meanmenu-reveal').trigger('click'); 40 return false; 41 }); 42 43 //ウィンドウサイズ変更によるメニュー非表示時の制御 44 $(window).on('resize', function() { 45 mm_control(); 46 }); 47 });
試したこと
Javascript
1//非表示中 2if(state == true) { 3 $('body').removeClass('fixed').css({'top': 0}); 4 window.scrollTo( 0 , scrollpos ); 5 $('.mean-container').removeClass('open'); 6 //追加した箇所 7 $(".mean-expand").toggleClass("mean-clicked",false).text('+'); 8 $('.sub-menu').css('display','none'); 9 //追加した箇所終了 10 $('.mean-nav .mask').hide(); 11 state = false; 12}
上記2行を追加しましたが、これだとPCにリサイズした際のドロップダウンは非表示になってしまいます・・・。
if(!navigator.userAgent.match(/(iPhone|iPad|iPod|Android)/)){}
で上記を囲ったりもしてみましたが、うまくいきません。
また、表示をかえるだけでは無理なのかもしれないと思ったので
Javascript
1//非表示中 2if(state == true) { 3 $('body').removeClass('fixed').css({'top': 0}); 4 window.scrollTo( 0 , scrollpos ); 5 $('.mean-container').removeClass('open'); 6 //追加した箇所 7$(".mean-expand").trigger('click'); 8 //追加した箇所終了 9 $('.mean-nav .mask').hide(); 10 state = false; 11}
上記も試してみましたが、なぜかクローズしたときにトップへスムーススクロールしてしまい、うまくいきませんでした。(スムーススクロールの動きもサイトにあります。)
スキル不足で恐縮ではございますが、ご教授いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/05 10:59
2020/08/05 11:04 編集