【问题标题】:Override the JavaScripted style with media query使用媒体查询覆盖 JavaScripted 样式
【发布时间】:2014-02-26 17:52:15
【问题描述】:

在我的页面设计中,我在小分辨率上放置了一个菜单按钮,单击时我会显示菜单项。如果项目处于显示状态(由 JS 完成)并且我最大化浏览器(它将更改为另一个查询条件),则项目没有隐藏。即使我将 display:none 添加到 css 以隐藏它们,但它并没有隐藏。为了克服我把 !important 放在那里。但它引起了另一个问题:菜单项不会通过菜单单击显示。 如果有人可以帮助我,我们将不胜感激。 编辑以便更好地理解。 菜单点击js如下:

$("#mobilemenu").click(function(){
   var dis = $("#menuitems li").css('display');
   if(dis == 'none') {
      $("#menuitems li").slideDown("slow");}
   else {
     $("#menuitems li").slideUp("slow");
   }
});

关于我的媒体查询:

@media {
   #menuitems li {display:none;}
}

在主css上:

#menuitems li {display:none;}

【问题讨论】:

    标签: javascript html css media-queries


    【解决方案1】:

    与其直接在 JavaScript 代码中设置样式,不如为元素指定一个类,以便使用 CSS 设置样式。

    例如,您可以像这样显示元素,而不是直接设置display: block

    JavaScript

    myElem.className = 'show';
    

    CSS

    myElem.show {
        display: block;
    }
    

    然后使用您的媒体查询,您可以简单地覆盖它:

    CSS

    @media screen {
        myElem.show {
            display: none;
        }
    }
    

    【讨论】:

    • 感谢您的及时回复。我已经编辑了我的问题并添加了代码。请您看一下是否应该更改为您所说的?
    • jQuery 的slideDown() 方法直接设置display: block。您需要将slideDown() 替换为其他内容。 (例如,一个 CSS 类通过过渡增加元素的高度)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2012-02-16
    • 2018-03-06
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多