移动菜单无法正常工作

Mobile menu doesn't work properly

我正在努力解决这个问题: 我正在尝试使用 bootstrap 和 coffeescript 在我的网站上制作移动菜单。页面完全响应并且运行良好。但是当我添加一个按钮来隐藏和显示移动视图上的菜单(通过 coffeescript)时,当我在桌面视图上调整 window 大小时,按钮不会消失。

 $('#button-open').on "click", ->
    $('#wrapper').animate({left: '220px'}, 10)
    $(this).css("display", "none")
    $('#button-close').css("display", "block")
    $('.navbar').slideDown(380)

  $('#button-close').on "click", ->
    $(this).css("display", "none")
    $('#button-open').css("display", "block")
    $('.navbar').slideUp(1)
    $('#wrapper').animate({left: '0px'}, 10)


  if $(window).width() <= 768
     $('#wrapper').css('margin', '0px 0px 0px 0px')
  else
     $('#wrapper').css('margin', '0px 0px 0px 220px') and $('#button-close').css('display', 'none')

不要介意动画,效果很好。问题是:当 window 将其大小更改为超过 768px 时按钮仍然可见,并且包装器以两种方式表现,这取决于我如何更改代码:它在左侧添加另一个 220px 边距或在我调整大小时保持边距 0px window. 我的目标是: - 按钮仅在宽度 < 768px 的 window 上可见 - 当宽度 < 768 时包装器始终剩余 0 像素,当宽度 > 768 像素时包装器始终剩余 220 像素。

我尝试编写动态更改它的函数,但我失败了。 If/else 语句有效,但仅在我不调整 window 大小时有效。

我从未使用过 coffeescript,但使用纯 CSS,我会这样做:

#menu {
    position: fixed;   // position menu anywhere on your screen
    z-index: 99;       // lay it on top
    left: 100vw;       // position at the right border of the screen -> invisible
    width: 90vw;       // don't forget to set dimensions
    height: 100vh;
    transition: left 0.5s ease-out;  // don't forget multi-browser-support
}

// when adding class "active" to menu, slide it in
#menu.active {
    left: 0;           // slide it in -> visible
}

现在轮到你让它与 coffeescript(或任何你使用的)一起工作了