向左滑动移动菜单,然后用JQuery向下滑动

时间:2014-09-28 21:29:42

标签: jquery css animation slide slidetoggle

我试图从右侧滑动移动菜单,然后向下滑动。我能够做到这一点,但我还需要它在第二次点击时向上滑动并向右滑动。但是,它只是同时执行此操作,在此单击后,它不再按顺序执行这些动画。代码如下。我需要修理它以便在菜单打开期间: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;
}

http://jsfiddle.net/uptjwuaj/

2 个答案:

答案 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>