javascript - jQuery 隐藏和显示胜过 CSS 媒体查询

标签 javascript jquery html css

我有这个按钮,当窗口小于 500px 时会出现。此按钮显示一个 div。

我还有一个调整大小的功能,如果窗口大于 500 像素,该功能会使 div 消失。

唯一的问题是,如果宽度大于 500px,我不希望显示 #nav_open 但我的 jquery 正在覆盖我的 @media 请求。

谁能告诉我我可能做错了什么,让 CSS 在某些方面胜过 jquery?

JSFIDDLE

HTML

<div id="nav_close">OPEN</div>
<div id="nav_open">CLOSE</div>
<div id="mobile-nav-container">
  <div class="mobile-menu">
    <ul class="menu">
      <li><a href="/">Home</a></li>
      <li><a href="/resellers.html">FOR RESELLERS</a></li>
      <li><a href="/merchants.html">MERCHANTS</a></li>
      <li><a href="/equipment.html">EQUIPMENT</a></li>
      <li><a href="/about.html">ABOUT</a></li>
      <li><a id="contact_button" href="#">CONTACT</a></li>
    </ul>
  </div>
</div>

CSS

#nav_close, #nav_open, #mobile-nav-container { display:none; }
@media (max-width:500px) { #nav_close { display:block;} }

JS

$(document).ready(function() {

  $(window).resize(function(e) {
    resize();
  });

  function resize() {
    if ($(window).width() > 500 && $('#mobile-nav-container').is(':visible')) {
      $('#mobile-nav-container').hide();
      $("#nav_open").hide();
      $("#nav_close").show();
    }
  }

  $('#nav_open, #nav_close').click(function() {
    $('#mobile-nav-container').toggle();
    $("#nav_open").toggle();
    $("#nav_close").toggle();
  });

});

最佳答案

Jquery 的 toggle()show()hide() 方法内联应用样式。根据 specificity 的 CSS 规则,内联样式甚至会覆盖您的媒体查询。虽然这通常应该避免,但您可以在媒体查询中添加 !important 关键字,以便它覆盖内联样式。

CSS:

@media (max-width:500px) { 
    #nav_close { 
        display: block !important;
    }
}

关于javascript - jQuery 隐藏和显示胜过 CSS 媒体查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37600217/

相关文章:

javascript - 如何使用 Javascript 修改节点的内容?

javascript - jQuery url.indexOf 不是函数

php - 在等待用户输入时停止

javascript - 如何提交没有表单 ID 和提交 ID 但已知隐藏值的表单?

php - 在其他域的另一个页面上加载 PHP 页面的 div

javascript - 显示/隐藏单选按钮,基于其他单选按钮

javascript - 为什么下划线使用立即调用函数表达式来包装其所有代码?

javascript - 如何在网站的菜单页面上添加 3d Logo ?

javascript - typescript :命名空间导入+特定导入

asp.net - 自动调整文本区域大小(多行 asp :TextBox)