如何仅在特定媒体查询上使用 jquery .css()?

How to only use jquery .css() on a specific media query?

当用户浏览器的宽度小于 1160 像素时,媒体查询会设置为折叠我网站的右侧栏。他们可以通过单击一个小箭头将其取回,然后它将与内容重叠(绝对定位)。

无论如何,我使用了以下jQuery来实现这个:

$('.right_sidebar_preview').on('click', function() {
     $('.right_sidebar_preview').css('display', 'none');
     $('.right_sidebar').css('display', 'block');
});
$('.right_sidebar').on('click', function() {
     $('.right_sidebar_preview').css('display', 'block');
     $('.right_sidebar').css('display', 'none');
});

所以基本上当浏览器大于 1160px 并且侧边栏可见时我已经隐藏了预览,在媒体查询中我设置了它所以当它低于 1160px 时,侧边栏变得不可见并且 "sidebar preview" 显示用户可以单击以使其变大。

CSS:

.right_sidebar {
  width: 242px;
  height: 100%;
  background-color: #d8e1ef;
  float: right;
  position: relative;
}
.right_sidebar_preview {
  display: none;
}
@media(max-width:1160px) {
  .right_sidebar {
    position: absolute;
    right: 0;
    display: none;
  }
  .right_sidebar_preview {
    display: block;
    background-color: #d8e1ef;
    position: absolute;
    right: 0;
    width: 15px;
    height: 100%;
  }
}

我的问题是,当我使用上面的代码时,假设我们在小于 1160px 的媒体查询中,我会打开侧边栏然后再次折叠它,当我展开浏览器返回时,它还关闭了大于 1160px 媒体查询的边栏。

那么我是否可以使用 .css()(或替代方法)指向特定的媒体查询?

是这样的吗?

$(window).resize(function(){
   if ($(window).width() <= 1160){  
      // lets party
   }    
});

在最近的项目中,我不得不根据浏览器大小处理 jQuery 中的单个函数。最初我打算检查设备宽度是否适用于移动设备 (320px):

jQuery

$(window).resize(function(){

       if ($(window).width() <= 320) {  

              // your code here

       }     

});

$(window).resize(function(){     

       if ($('header').width() == 320 ){

              // your code here

       }

});

不要操纵 CSS display: 属性。相反,使用 CSS 类 来控制侧边栏及其句柄的可见性。这样您就可以使用媒体查询来控制元素是否显示。

在下面的演示中,单击 "Full page" 按钮以查看其在大于 1160 像素的屏幕上的工作原理。

$(function() {
  $('.right_sidebar, .right_preview').on('click', function() {
    $('.right_sidebar, .right_preview').toggleClass('lt-1160-hide lt-1160-show');
  });
});
.right_sidebar {
  width: 100px;
  height: 100px;
  background-color: papayawhip;
  float: left;
  display: block;
}
.right_preview {
  width: 20px;
  height: 100px;
  background-color: palegoldenrod;
  float: left;
  display: none;
}
@media(max-width: 1160px) {
  /* note: the following rules do not apply on larger screens */
  .right_sidebar.lt-1160-show, .right_preview.lt-1160-show {
    display: block;
  }
  .right_sidebar.lt-1160-hide, .right_preview.lt-1160-hide {
    display: none;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>


<div class="right_sidebar lt-1160-hide">Sidebar</div>
<div class="right_preview lt-1160-show">&rsaquo;</div>