CSS 优先级和媒体查询



我有.cssClass包含:

// fallback without calc
width: 60%; 
@media (max-width: 500px) { width: 58%; }
@media (max-width: 460px) { width: 55%; }
@media (max-width: 420px) { width: 50%; }
@media (max-width: 380px) { width: 45%; }
@media (max-width: 340px) { width: 40%; }
// using calc
width: -webkit-calc(70% - (34px + 1.12em));
width: -moz-calc(70% - (34px + 1.12em));
width: -ms-calc(70% - (34px + 1.12em));
width: -o-calc(70% - (34px + 1.12em));
width: calc(70% - (34px + 1.12em));

所以如果浏览器支持calc,它将替换之前定义的宽度(60%),它将使用calc方法。

但是,它在调整大小时仍使用媒体查询,将 calc 值替换为查询值。

我在不支持 calc 的浏览器中得到了很好的结果,因为它只是省略了所有这些东西,但支持 calc 的浏览器会获得与回退查询混合的 calc 结果。

我该怎么办?我只希望在没有计算支持的情况下运行媒体查询。

我正在寻找一种不涉及JavaScript的解决方案或其他方法。

SASS 将对嵌套属性进行排序,以便最后进行媒体查询。

以下是发生的情况的一些示例:

南海

body {
    background: #000000; //black
    @media (max-width: 500px) { 
        background: #990000; //red
    }
    background: #000099; //blue
    @media (max-width: 300px) { 
        background: #009900; //green
    }
}

输出云集

body {
    background:#000;
    background:#009
}
@media (max-width: 500px) {
    body {
        background:#900
    }
}
@media (max-width: 300px) {
    body {
        background:#090
    }
}

演示

你可以做的是放入第二个嵌套来操作排序顺序:

南海

body {
    background: #000000; //black
    @media (max-width: 500px) { 
        background: #990000; //red
    }

}
body {
    background: #000099; //blue
    @media (max-width: 300px) { 
        background: #009900; //green
    }
}

输出云集

body {
    background:#000
}
@media (max-width: 500px) {
    body {
        background:#900
    }
}
body {
    background:#009
}
@media (max-width: 300px) {
    body {
        background:#090
    }
}

演示

因此,您可以使用代码执行此操作,它应该按正确的顺序排序:

南海

.cssClass {
    // fallback without calc
    width: 60%; 
    @media (max-width: 500px) { width: 58%; }
    @media (max-width: 460px) { width: 55%; }
    @media (max-width: 420px) { width: 50%; }
    @media (max-width: 380px) { width: 45%; }
    @media (max-width: 340px) { width: 40%; }
}
.cssClass {
    // using calc
    width: -webkit-calc(70% - (34px + 1.12em));
    width: -moz-calc(70% - (34px + 1.12em));
    width: -ms-calc(70% - (34px + 1.12em));
    width: -o-calc(70% - (34px + 1.12em));
    width: calc(70% - (34px + 1.12em));
}

最新更新