前提・実現したいこと
文字が横からスッスッスッと順番に出てきて、
閉じる時も順番に消えていく、
というメニューを作成したいです。
イメージとしては、
ああああ ← 1 1s
いいいい ← 2 1.2s
うううう ← 3 1.4s
ええええ ← 4 1.6s
おおおお ← 5 1.8s
ああああ → 5 1.8s
いいいい → 4 1.6s
うううう → 3 1.4s
ええええ → 2 1.2s
おおおお → 1 1s
遅延表示・非表示する感じです。
順番は上からでも下からでも良いですが、
自分で指定できるとうれしいです。
JQueryのToggleクラスを使っていますが、
他に良い方法などもあれば併せて教えてください。
発生している問題・エラーメッセージ
途中までは何となく思い通りの感じになってきたのですが、
・連打したりWindowサイズを変更して戻すと順番がバラバラになる
・非表示の際にパッと消えてしまう
なども問題が発生しています。
該当のソースコード
JQuery
1<script> 2$(function(){ 3 $("#gmb13").on("click", function() { 4 $(this).toggleClass("active"); 5 $("nav .gml13").toggleClass('active'); 6 7 if ($("nav .gml13").hasClass('active')) { 8 $('ul.delay-show li') 9 .css({ 10 left : '40px', 11 opacity: 0 12 }) 13 .each(function(i){ 14 $(this).delay(300 * i) 15 .animate({ 16 left : '0', 17 opacity: 1 18 }, 700); 19 }); 20 21 } else { 22 $('ul.delay-show li') 23 .css({ 24 left : '0px', 25 opacity: 1 26 }) 27 .each(function(i){ 28 $(this).delay(300 * i) 29 .animate({ 30 left : '40px', 31 opacity: 0 32 }, 700); 33 }); 34 } 35 }); 36}); 37$(window).resize(function(){ 38if(window.matchMedia('(max-width:800px)').matches){ 39 } else { 40 $('#gmb13').removeClass('active'); 41 $('nav .gml13').removeAttr('style'); 42 } 43}); 44</script>
HTML
1<!-- global menu button --> 2<div id="gnavi13"> 3<div id="gmb13"> 4<div> 5 <span></span> 6 <span></span> 7 <span></span> 8</div> 9<p class="offlabel">MENU</p> 10<p class="onlabel">CLOSE</p> 11</div> 12 13<!-- global menu --> 14<nav> 15<ul class="gml13 delay-show"> 16<li><a href="index.html">Home</a></li> 17<li><a href="about.html">マッサージ</a></li> 18<li><a href="works.html">よもぎ蒸し</a></li> 19<li><a href="link.html">料金案内</a></li> 20<li><a href="contact.html">ご相談</a></li> 21</ul> 22</nav> 23</div>
CSS
1/*13.横から出てくるメニュー改編中 2=======================================================================*/ 3#gnavi13 .gml13 { 4 display: block; 5} 6#gmb13 { 7 display: none; 8} 9 10@media screen and (max-width: 800px) { 11#gnavi13 { 12 position: relative; 13} 14#gnavi13 .gml13 { 15 display: none; 16} 17 18/* メニューボタン */ 19#gmb13 { 20 display: block; 21 position: fixed; 22 position: absolute; 23 position: relative; 24 right: 42px; 25 top: 0; 26 left: 0; 27 width: 42px; 28 height: 48px; 29 padding: 24px 8px; 30 cursor: pointer; 31 z-index: 1; 32 -webkit-transition: all 1s; 33 transition: all 1s; 34 background-color: rgba(255,255,255,0.3); /* ボタン背景 */ 35} 36 37#gmb13 p { 38 margin-top: 32px; 39 margin-left: 0; 40 font-size: 16px; 41 color: #fff; 42} 43 44#gmb13 div { 45 position:relative; 46} 47 48#gmb13 span { 49 display:block; 50 position:absolute; 51 width:100%; 52 border-bottom:solid 1px #fff; /* バーの色 */ 53 -webkit-transition: .35s ease-in-out; 54 transition: .35s ease-in-out; 55} 56#gmb13 span:nth-child(1) { 57 top:0; 58} 59#gmb13 span:nth-child(2) { 60 top: 12px; 61} 62#gmb13 span:nth-child(3) { 63 top: 24px; 64} 65 66/* open */ 67 68#gmb13.active { 69 background-color: rgba(255,255,255,0.6); /* ボタンの色 */ 70} 71 72#gmb13.active .offlabel { 73 display: none; 74} 75 76#gmb13 .onlabel { 77 display: none; 78} 79 80#gmb13.active .onlabel { 81 display: block; 82 color: #fff; 83} 84 85#gmb13.active span:nth-child(1) { 86 top: 7px; 87 -webkit-transform:rotate(-45deg); 88 transform:rotate(-45deg); 89 border-color: #fff; 90} 91 92#gmb13.active span:nth-child(2){ 93 opacity: 0; 94} 95 96#gmb13.active span:nth-child(3) { 97 top: 7px; 98 -webkit-transform:rotate(45deg); 99 transform:rotate(45deg); 100 border-color: #fff; 101} 102 103/* 中身 */ 104nav { 105 width: 300px; 106 margin: 0 auto; 107} 108ul.delay-show li { 109 background: #fff; 110 color: #4a3b35; 111 margin-bottom: 5px; 112 list-style: none; 113 padding: 10px; 114 position: relative; 115 border-radius: 10px; 116 -webkit-border-radius: 10px; 117 -moz-border-radius: 10px; 118} 119ul.delay-show.active { 120 display: block !important; 121} 122}
かなりハマッてしまっており、すみませんがお力添えお願いします。
回答1件
あなたの回答
tips
プレビュー