クリックしたら上からドロップメニューが下りてくるようにしたい
jQueryでLPを作っています。スマートフォン用のものを作っているのですが、ハンバーガーメニュー(三←こんな形のメニュー)をクリックしたら形が✖マークに変形し、上からドロップメニューが下りてくる仕様にしたいと思っています。
しかし、クリックすると、一度目ではハンバーガーメニューが変形しません。2度目のクリックで、ようやく✖マークに変形します。ドロップメニューは問題なく表示されます。
HTML
HTML
1<div id="humberger-menu"> 2 <span class="line-1"></span> 3 <span class="line-2"></span> 4 <span class="line-3"></span> 5</div> 6 7<div class="drop-menu"> 8 <ul> 9 <li>hoge</li> 10 <li>hoge</li> 11 <li>hoge</li> 12 </ul> 13</div> 14 15
CSS
CSS
1/* humberger menu */ 2#humberger-menu { 3 position: fixed; 4 top: 24px; 5 right: 20px; 6 width: 40px; 7 height: 32px; 8 z-index: 3; 9} 10#humberger-menu span { 11 position: absolute; 12 width: 40px; 13 height: 4px; 14 background: #333; 15} 16.line-1 { 17 top: 0; 18} 19.line-2 { 20 top: 14px; 21} 22.line-3 { 23 top:28px; 24} 25 26/******* /drop menu *******/ 27.drop-menu { 28 display: none; 29}
jQuery
jQuery
1 2$(function() { 3 4 $('#humberger-menu').on('click', function() { 5 $(this).toggleClass('open'); 6 7 if($(this).hasClass('open')) { 8 $('.line-2').css({ 9 opacity: '1', 10 transition: 'all 0.4s' 11 }); 12 $('.line-1').css({ 13 transform: 'rotate(0) translate(0, 0)' , 14 transition: 'all 0.4s' 15 }); 16 $('.line-3').css({ 17 transform: 'rotate(0) translate(0, 0)', 18 transition: 'all 0.4s' 19 }); 20 } else { 21 $('.line-2').css({ 22 opacity: '0', 23 transition: 'all 0.4s' 24 }); 25 $('.line-1').css({ 26 transform: 'rotate(45deg) translate(3px, 15px)' , 27 transition: 'all 0.4s' 28 }); 29 $('.line-3').css({ 30 transform: 'rotate(-45deg) translate(3px, -15px)', 31 transition: 'all 0.4s' 32 }); 33 } 34 35 $(this).next('.drop-menu').slideToggle('slow'); 36 }); 37}); 38
試したこと
1.一番下のコード( $(this).next('.drop-menu').slideToggle('slow');)の位置を変えてみた(もともとは上から3行目にあった)。
2.$('#humberger-menu').click(function() を
$('#humberger-menu').on('click', function() に変えてみた。
どなたかどうかよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー