以下是来自Adobe docs的内容。
媒体查询规范还提供了关键字only
,旨在隐藏旧版浏览器中的媒体查询。像一样not
,关键字必须位于声明的开头。例如:
media="only screen and (min-width: 401px) and (max-width: 600px)"
无法识别媒体查询的浏览器期望使用逗号分隔的媒体类型列表,并且规范指出,它们应在第一个非数字字符(连字符)之前立即截断每个值。因此,旧的浏览器应将上述示例解释为:
media="only"
因为没有仅这种媒体类型,所以样式表将被忽略。同样,旧的浏览器应解释
media="screen and (min-width: 401px) and (max-width: 600px)"
如
media="screen"
换句话说,即使它不知道媒体查询的含义,也应将样式规则应用于所有屏幕设备。
不幸的是,IE 6-8无法正确实施该规范。
它没有将样式应用于所有屏幕设备,而是完全忽略了样式表。
尽管有这种行为,但仍建议仅在要从其他不那么常见的浏览器中隐藏样式时,才为媒体查询添加前缀。
因此,使用
media="only screen and (min-width: 401px)"
和
media="screen and (min-width: 401px)"
在IE6-8中将具有相同的效果:两者都将阻止使用这些样式。但是,它们仍将下载。
另外,在支持CSS3媒体查询的浏览器中,如果视口宽度大于401px
并且媒体类型为screen ,则两个版本都将加载样式。
我不确定所有不支持CSS3媒体查询的浏览器是否需要该only
版本
media="only screen and (min-width: 401px)"
相对于
media="screen and (min-width: 401px)"
确保它不会被解释为
media="screen"
对于可以访问设备实验室的人来说,这将是一个很好的测试。
only
关键字会隐藏旧浏览器中的样式表,请参见下面@hybrid的答案。他解释得很好。