首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个不同方向上切换菜单

在两个不同方向上切换菜单
EN

Stack Overflow用户
提问于 2017-02-12 00:10:51
回答 1查看 504关注 0票数 1

我想让我的切换菜单从右向左滑动左内容,从左向右滑动右内容。我累了,我已经完成了,但切换从错误的位置开始(菜单按钮的右侧)。但是,当我们再次单击菜单按钮时,左右内容会正确地滑出。

这里链接到我的代码:http://codepen.io/EmilBuszylo/pen/bgQZQp

代码语言:javascript
复制
// Burger animation
$('.burger-menu').on('click', function() {
  if ($(this).hasClass("burger-menu-clicked")) {
    $(this).removeClass("burger-menu-clicked");
    $(this).addClass("burger-menu-closing");
  } else {
    $(this).addClass("burger-menu-clicked");
    $(this).removeClass("burger-menu-closing");
  }
});

// toggle menu
$('.burger-menu').click(function(){
  $('.nav-l').toggle('slide',{direction: 'right'} ,900);
  $('.nav-r').toggle('slide',{direction: 'left'} ,900);
});
代码语言:javascript
复制
* {
  box-sizing: border-box;
}

body {
  background: #4A96AD;
   width: 100%; 
  height: 100%;
  margin: 0 auto;
  padding: 0;
  overflow: hidden;
}

// hamburger button

[class^="line-"] {
  display: block;
  height: 7px;
  width: 50px;
  background: white;
  border-radius: 1px;
}

.burger-menu {
  display: inline-block;
  background: rgba(white, .15);
  border: 1px solid rgba(black, .15);
  padding: 9px;
  border-radius: 3px;
  transition: background .3s;
  text-align: center;
  &:hover {
    background: rgba(white, .2);
    cursor: pointer;
  }
  & .label {
    display: inline-block;
    font-size: 14px;
    line-height: 0;
    margin: 16px 0;
    letter-spacing: 0.15rem;
  }
}

.burger-menu-clicked {
  .line-1 {
    animation: menu-top .4s forwards ease-in-out;
  }
  .line-3 {
    animation: menu-bottom .4s forwards ease-in-out;
  }
  .label {
    opacity: 0;
  }
}

.burger-menu-closing {
  .line-1 {
    animation: menu-top-reverse .5s forwards ease-in-out;
  }
  .line-3 {
    animation: menu-bottom-reverse .5s forwards ease-in-out;
  }
  .label {
    transition: .5s;
    opacity: 1;
  }
}

@keyframes menu-top {
  0% {
    transform: rotate(0deg) translateY(0px);
  }
  50% {
    transform: rotate(0deg) translateY(20px);
  }
  100% {
    transform: translateY(20px) rotate(45deg);
  }
}

@keyframes menu-top-reverse {
  0% {
    transform: translateY(20px) rotate(45deg);
  }
  50% {
    transform: rotate(0deg) translateY(20px);
  }
  100% {
    transform: translateY(0px) rotate(0deg);
  }
}

@keyframes menu-bottom {
  0% {
    transform: rotate(0deg) translateY(0px);
  }
  50% {
    transform: rotate(0deg) translateY(-19px);
  }
  100% {
    transform: translateY(-19px) rotate(-45deg);
  }
}

@keyframes menu-bottom-reverse {
  0% {
    transform: translateY(-19px) rotate(-45deg);
  }
  50% {
    transform: rotate(0deg) translateY(-19px);
  }
  100% {
    transform: translateY(0px) rotate(0deg);
  }
}

// Menu
.top {
  height: 100%;
  margin:  0 auto;
  text-align: center;
  background-color: rgba(255, 233, 243, 0.4);
}
.over-menu {
  .nav-l {
     display:none;
  }
  .nav-r {
     display:none;
  }
  li {
    list-style-type: none;
    display: inline-block;
    margin-right: 35px;
    text-transform: uppercase;
  }
}
.show {
  opacity: 1;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="top">
  <nav>
    <ul class="over-menu">
        <li>
      <ul class="nav-l">
        <li>category1</li>
        <li>category2</li>
      </ul>
        </li>
        <li>
      <div class="burger-menu">
      <span class="line-1"></span>
      <span class="label">menu</span>
      <span class="line-3"></span>
      </div>
        </li>
        <li>
      <ul class="nav-r">
        <li>category3</li>
        <li>category4</li>
      </ul>
        </li>
    </ul> 
  </nav>
</div>

EN

回答 1

Stack Overflow用户

发布于 2017-02-12 06:18:21

您的问题是jquery通过在隐藏元素上设置display: none来影响布局。我建议要么修复你的布局(最好是使用flex-box),要么只使用像animate.css这样的库来制作这样的小动画。然后您可以控制自己如何保存状态(关闭/打开),而不是使用display: none。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42178091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档