CSS 媒体查询不过度骑行

Posted

技术标签:

【中文标题】CSS 媒体查询不过度骑行【英文标题】:CSS Media Query not over riding 【发布时间】:2015-04-19 12:35:29 【问题描述】:

我一直使用max-width 媒体查询,但我知道引导程序会使用min-width 样式的媒体查询,我正在尝试在我当前的项目中遵循这种样式。

我有以下类声明(这里没有媒体查询)

.Mobilemenutrigger 
    padding: 2px 12px 2px 12px;
    background: #6bb854;
    display: inline-block;
    float:right;
    margin-right: 20px;
    margin-top: 20px;

然后按照引导程序的媒体查询约定,我有以下内容

@media (min-width: 768px)  
    .Mobilemenutrigger 
        display: none;
    

但是,当我在浏览器中查看此内容时,正在应用原始声明,并且媒体查询并没有像我认为的那样覆盖原始声明。

我知道我可以将!important 扔到媒体查询上,但我的印象是在执行min-width 风格的媒体查询时我不需要这样做。我在这里遗漏了一些非常明显的东西吗?

【问题讨论】:

确保将媒体查询规则放在正常规则之后。 hmm...它们在单独的文件中,我想知道我是否将媒体查询文件包含在我的主要 css 包含之后,如果这会有所不同 是的,这就是问题所在。将媒体查询文件移到主 css 文件之后。 就是这样...我将媒体查询 css 文件移动到我的主 css 之后。一切都按预期工作。如果您将其放入答案中,我将很乐意接受它 我认为接受 IAteYourKitten 的回答是公平的,因为它在技术上是正确的,虽然被否决了。 【参考方案1】:

确保浏览器在读取初始类属性后正在读取您的媒体查询。

【讨论】:

是的,抱歉,我错过了您帖子中关于 !important 属性的最后一段。 如果你正确使用媒体查询,这个例子完全没有必要 修复在我的回答中。我犯了一个错误,将编辑我的答案。【参考方案2】:

由于相同的specificity,您必须在初始声明之后添加媒体查询。

如果您颠倒顺序,则会导致对一般规则的覆盖超过 mediaquery 的规则。

按照这个确切的顺序编写,它将正确运行,如here:

.Mobilemenutrigger 
    padding: 2px 12px 2px 12px;
    background: #6bb854;
    display: inline-block;
    float:right;
    margin-right: 20px;
    margin-top: 20px;


@media (min-width: 768px)  
    .Mobilemenutrigger 
        display: none;
    

相反,如果您颠倒顺序,并且屏幕宽度超过 768 像素,首先,mediaquery 将设置 display: none;,然后更一般的规则将使用 display: inline-block; 覆盖它

【讨论】:

【参考方案3】:

文件的加载顺序是什么?如果在 media.css 之后加载 main.css,它将无法正常运行。尝试最后附加 media.css 看看会发生什么。

【讨论】:

以上是关于CSS 媒体查询不过度骑行的主要内容,如果未能解决你的问题,请参考以下文章

CSS媒体查询及其使用

CSS3媒体查询总结

CSS媒体查询(媒体屏幕)[关闭]

jQuery 和 CSS 媒体查询不同步

覆盖 CSS 媒体查询

CSS 媒体查询和 JavaScript 窗口宽度不匹配