一个CSS3中为什么会多次使用@media only screen?(一个宽度区间定义好多遍)

html-css012

一个CSS3中为什么会多次使用@media only screen?(一个宽度区间定义好多遍),第1张

@media only screen是只(only)针对彩色屏幕设备的意思,每块都用这个,然后加上and限制屏幕尺寸,两个条件来一起起作用的!所以,不是重复定义。就好比:男人中170cm,男人中160cm等等,这里@media only screen就相当于“男人”是另外一个分类方式,区别于屏幕分别率的。

W3C文档这样描述的:The keyword ‘only’ can also be used to hide style sheets from older user agents. User agents must process media queries starting with ‘only’ as if the ‘only’ keyword was not present.

翻译过来就是:only是为了在不支持媒体查询的浏览器中隐藏样式表,浏览器处理以only开头的关键词时将会忽略only。

@media only screen and (min-width:xxx) and (max-width:xxx) 与 @media screen and (min-width:xxx) and (max-width:xxx) 在支持媒体查询的浏览器中其实是一模一样的,没有任何区别,因为only将被忽略。但是在不支持媒体查询的浏览器中由于没有only这个媒体类型,因此会直接忽略这条媒体查询。在不支持媒体查询的浏览器中,如果不加only,@media screen and (min-width:xxx) and (max-width:xxx)将会被解析为@media screen,明显与期望不一致。因此通过加一个浏览器不认识的媒体类型only则浏览器将会直接忽略这条媒体查询。

media="only screen and (min-width: 401px) and (max-width: 600px)"

/* 在支持媒体查询的浏览器中等于*/

media="screen and (min-width: 401px) and (max-width: 600px)"

/*在不支持媒体查询的浏览器中解析到带only的媒体查询时,会将only视为媒体类型。(由于没有only这种媒体类型,因此将不会被应用)*/

media="only"

/*如果不带only,在不支持媒体查询的浏览器中*/

media="screen and (min-width: 401px) and (max-width: 600px)"

/*将被解析为screen,将会被应用到屏幕类型设备上*/

media="screen"