我一直试图弄清楚是否可以嵌套CSS功能查询(也称为“CSS @supports
”)和常规媒体查询,以及正确的方法。
示例A 显示媒体查询中的功能查询。
示例B 显示功能查询中的媒体查询。
甚至可以嵌套它们吗?如果是这样,是否有一种首选的嵌套方式? A或B?
.foo {
background: red;
}
/* EXAMPLE A */
@media (min-width: 50em) {
.foo {
background: green;
}
@supports (flex-wrap: wrap) {
.foo {
background: blue;
}
}
}
/* EXAMPLE B */
@supports (flex-wrap: wrap) {
.foo {
background: green;
}
@media (min-width: 50em) {
.foo {
background: blue;
}
}
}
答案 0 :(得分:19)
根据section 3 of the spec,这两个示例都是有效的CSS,目前它们似乎始终受到了解@supports
规则和嵌套@media
规则({{3}的浏览器的支持}})。
虽然两个示例仅在{em> 符合background: blue
和@media
条件时才会应用@supports
声明,
background: green
媒体查询时,A才会应用background: blue
或(min-width: 50em)
; @supports
并支持flex-wrap: wrap
时,由于你的两个例子意味着微妙的不同,你选择哪一个将取决于你的用例:
@supports
或flex-wrap: wrap
的浏览器看到 声明,而是始终应用background: red
,选择B. background: green
,即使由于不支持background: blue
而永远不会应用@supports
或flex-wrap: wrap
,选择A.