为什么在隐含时使用媒体查询类型“全部”?

时间:2013-10-29 07:15:14

标签: css css3 media-queries

我最近注意到我在每个all查询规则中都使用了@media,我无法弄清楚为什么会这样做。

我在网上搜索过,我发现网络上的大多数@media规则示例使用的格式都是@media all and (some other condition...),为什么媒体类型all已经隐含了没有指定媒体类型? 它可能是一些较旧的浏览器兼容性问题吗?

我想我真正想问的是,为什么在不需要时使用媒体类型all是常见做法?

1 个答案:

答案 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将具有红色背景。

JSFiddle demo