移动导航关闭按钮不会关闭移动设备上的菜单

时间:2015-07-10 12:09:16

标签: jquery mobile nav

我找到了这个美味的小手机菜单http://codepen.io/Johnm__/pen/eNgXZW,我尝试过这个菜单。当我使用浏览器调整网站大小以启动移动菜单,然后测试打开的关闭汉堡菜单时,它可以正常工作。当我在手机上查看网站时,我无法关闭菜单。

http://codepen.io/Johnm__/pen/eNgXZW

这是代码集的jquery形式......

// HAMBURGLERv2

  function togglescroll() {
    $('body').on('touchstart', function(e) {
      if ($('body').hasClass('noscroll')) {
        e.preventDefault();
      }
    });
  }

  $(document).ready(function() {
    togglescroll()
    $(".icon").click(function() {
      $(".mobilenav").fadeToggle(500);
      $(".top-menu").toggleClass("top-animate");
      $("body").toggleClass("noscroll");
      $(".mid-menu").toggleClass("mid-animate");
      $(".bottom-menu").toggleClass("bottom-animate");
    });
  });

  // PUSH ESC KEY TO EXIT

  $(document).keydown(function(e) {
    if (e.keyCode == 27) {
      $(".mobilenav").fadeOut(500);
      $(".top-menu").removeClass("top-animate");
      $("body").removeClass("noscroll");
      $(".mid-menu").removeClass("mid-animate");
      $(".bottom-menu").removeClass("bottom-animate");
    }
  });

这是css ......

  * {
    font-family: 'helvetica nue', sans-serif;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    -webkit-tap-highlight-color: transparent;
    /* For some Androids */
  }

  .top-animate {
    background: #fff !important;
    top: 13px !important;
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
  }

  .mid-animate {
    opacity: 0;
  }

  .bottom-animate {
    background: #fff !important;
    top: 13px !important;
    -webkit-transform: rotate(-225deg);
    transform: rotate(-225deg);
  }

  .top-menu {
    top: 5px;
    width: 25px;
    height: 2px;
    border-radius: 10px;
    background-color: #F9A530;
  }

  .mid-menu {
    top: 13px;
    width: 25px;
    height: 2px;
    border-radius: 10px;
    background-color: #F9A530;
  }

  .bottom-menu {
    top: 21px;
    width: 25px;
    height: 2px;
    border-radius: 10px;
    background-color: #F9A530;
  }

  .menui {
    background: orange;
    transition: 0.6s ease;
    transition-timing-function: cubic-bezier(.75, 0, .29, 1.01);
    margin-top: 10px;
    position: absolute;
  }

  .icon {
    z-index: 999;
    position: fixed;
    display: block;
    padding: 9px;
    height: 32px;
    width: 32px;
    margin: 0px;
    top: 0;
    left: 50px;
  }

  .mobilenav {
    font-family: inherit;
    top: 0;
    left: 0;
    z-index: 999;
    display: none;
    position: fixed;
    width: 100%;
    height: 100%;
    background: orange;
  }

  .mobilenav li {
    list-style-type: none;
    text-align: center;
    padding: 10px;
  }

  .mobilenav li a {
    font-size: 150%;
    color: #fff;
    text-decoration: none;
    font-weight: 300;
    width: 100%;
  }

  .mobilenav li:first-child {
    margin-top: 60px;
  }

1 个答案:

答案 0 :(得分:1)

您正在使用

 e.preventDefault();
第6行中的

。这可以防止您的触摸事件发生。 touchstart事件将以这种方式被抑制。