我试图从右侧滑动移动菜单,然后向下滑动。我能够做到这一点,但我还需要它在第二次点击时向上滑动并向右滑动。但是,它只是同时执行此操作,在此单击后,它不再按顺序执行这些动画。代码如下。我需要修理它以便在菜单打开期间:1。向左滑动,2。向下滑动。在菜单关闭期间:1.slides / wraps,2.slides right。
$(".mobile-menu-toggler").click(function (){
$(this).removeClass('mobile-menu-toggler');
$(this).addClass('mobile-menu-toggler-clicked');
$("#mainmenu-mobile").toggle({direction:'left'},700).animate({'height':'100%'},700);
});
$(".mobile-menu-toggler-clicked").click(function (){
$(this).removeClass('mobile-menu-toggler-clicked');
$(this).addClass('mobile-menu-toggler');
$("#mainmenu-mobile").toggle({direction:'left'},700).animate({'height':'0'},700);
});
P.S。我尝试使用.show
和.hide
代替.toggle
。它会显示,但它不会隐藏。
CSS:
#mainmenu-mobile-wrap {
display: block;
position: fixed;
top:0;
right: 0;
z-index: 1000;
height: 100%;
}
#mainmenu-mobile {
display: none;
float: right;
width: 280px;
height: 0;
}
#mobile-menu-toggler{
width: 50px;
height: 25px;
background: red;
float: left;
}
答案 0 :(得分:1)
这是解决方案:
(如果这就是你想要的,因为我不知道我是否理解你了)
$open=false;
$(".mobile-menu-toggler").click(function (){
if($open==false){
$("#mainmenu-mobile").toggle({direction:'left'},700).animate({'height':'100%'},700);
$open=true;
}else{
$("#mainmenu-mobile").animate({'height':'0'},700).toggle({direction:'left'},700);
$open=false;
}
});
这是jsfiddle链接: http://jsfiddle.net/3bmduf55/
答案 1 :(得分:0)
根据菜单状态(我将其存储在数据集中)以及CSS中的一些更改,简单地交替延迟:
var $mobMenuWrap = $('#mainmenu-mobile-wrap');
var $mobMenuTog = $('#mobile-menu-toggler');
var $mobMenu = $('#mainmenu-mobile');
$mobMenuTog.click(function (){
var io = this.dataset.io ^= 1; // I/O Toggler
$mobMenuWrap.delay(io?0:700).animate({right:io?0:-280},700);
$mobMenu.delay(io?700:0).slideToggle(700);
});
#mainmenu-mobile-wrap {
position: fixed;
top:0;
right: -280px;
width: 280px;
z-index: 1000;
}
#mainmenu-mobile {
overflow:hidden;
display:none;
background:#ddd;
}
#mobile-menu-toggler{
position:absolute;
left: -50px;
width: 50px;
height: 25px;
background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mainmenu-mobile-wrap">
<div id="mobile-menu-toggler" class="mobile-menu-toggler"></div>
<div id="mainmenu-mobile">
<ul>
<li>1111111</li>
<li>22222222222222</li>
<li>3333333333333</li>
</ul>
</div>
</div>