我最近注意到我在每个all
查询规则中都使用了@media
,我无法弄清楚为什么会这样做。
我在网上搜索过,我发现网络上的大多数@media
规则示例使用的格式都是@media all and (some other condition...)
,为什么媒体类型all
已经隐含了没有指定媒体类型?
它可能是一些较旧的浏览器兼容性问题吗?
我想我真正想问的是,为什么在不需要时使用媒体类型all
是常见做法?
答案 0 :(得分:4)
如Media Queries W3C Recommendation中所述:
'all'用于表示样式表适用于所有媒体类型。
...
为适用于所有媒体类型的媒体查询提供简写语法;可以省略关键字'all'(以及尾随'和')。即如果未明确给出媒体类型,则为“全部”。
使用单词来表示在第一个引用的句子中听起来像all
本身就可以纯粹用于演示目的。
然而,有一些部分all
用于特定目的。在section 3.1文件中提到:
未知的媒体功能。当其中一个指定的媒体功能未知时,用户代理将媒体查询表示为
"not all"
。未知的媒体功能值。与未知媒体功能一样,当其中一个指定的媒体功能值未知时,用户代理将媒体查询表示为
"not all"
。
格式错误的媒体查询也默认为not all
。
另一个例子,正如his comment中提到的BoltClock对问题的使用是only all
。关键字only
用于隐藏旧用户代理的样式表。我们可以使用以下CSS测试它:
body {
background: red;
}
@media only all {
body {
background: green;
}
}
如果我们在现代浏览器中打开它,文档的body
将具有绿色背景。如果我们在较旧的浏览器(例如IE8)中打开它,则文档的body
将具有红色背景。