使用jquery

时间:2018-03-06 10:44:50

标签: javascript jquery html css

当窗口太小时,我做了一些媒体查询来隐藏侧边菜单。问题是,我不能再次切换菜单,因为它在css上是硬编码的。

所以我尝试点击按钮隐藏侧边栏。但是在我调整大小时它会多次点击。

当窗口小于991px时,我可以做什么来隐藏侧边菜单,但是当我点击按钮时仍然可以再次显示它?

$(window).resize(function() {
  var width = $(document).width();
  if (width < 991) {
    $('#sidebar-btn').click();
  }
});

$('#sidebar-btn').click(function() {
  $('#sidebar').toggle('visible');
  $('.content-wrapper, .full-page-wrapper').toggleClass('content-wrapper full-page-wrapper');
});
#sidebar {
  background: #fafafa;
  border-right: 2px solid #e5e5e5;
  width: 200px;
  height: 100%;
  display: block;
  position: absolute;
  top: 0;
  overflow-x: hidden;
  transition: left 1s ease;
}

@media screen and (max-width: 991px) {
  #sidebar {
    left: -200px !important;
  }
  .content-wrapper {
    background: #fff;
    margin-left: 0;
    min-height: 100vh;
    padding: 1rem 1.5rem;
    margin-bottom: 70px;
    transition: all 1s ease;
  }
}

3 个答案:

答案 0 :(得分:0)

你可以有一个标志变量来保持侧栏的隐藏/可见状态。

&#13;
&#13;
var sidebarIsVisible = true;
$(window).resize(function() {
  var width = $(document).width();
  if (width < 991) {
    if (sidebarIsVisible) {
      // Will happen only once now
      $('#sidebar-btn').click();
      sidebarIsVisible = false;
    } else {
      if (!sidebarIsVisible) {
        // Make visible if width is greater than 991 and sidebar is invisible
        $('#sidebar-btn').click();
        sidebarIsVisible = true;
      }
    }
  }
});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

为什么不使用#sidebar jQuery width小于991时隐藏hide()

$(window).resize(function() {
  var width = $(document).width();
  if (width < 991) {
    $('#sidebar').hide();
  }else{
    $('#sidebar').show();
  }
});

答案 2 :(得分:0)

992px及以上 - 显示#sidebar并隐藏#sidebar-btn

#sidebar{
    display: block;
}
#sidebar-btn{
    display: none;
}

对于991px及以下 - 隐藏#sidebar并显示#sidebar-btn

@media screen and (max-width: 991px) {
    #sidebar{
        display: none;
    }
    #sidebar-btn{
        display: block;
    }
}

现在使用#sidebar-btn点击

上的切换侧栏
$('#sidebar-btn').click(function (){
    $('#sidebar').toggle();
});