慕瓜0564237
2017-09-29 15:22
;表示不支持媒体特性但又支持媒体类型的设备,这样就会不读样式,因为其先会读取only而不是screen; 这句话怎么理解?网上找了一圈也没有解释清除,only在支持media type的浏览器时的作用。
我看了下一篇老外的讲解,链接在上面,第二条回答就是,感兴趣的可以去看看。
假如有如下代码
media="screen and (min-width: 401px) and (max-width: 600px)"
在老版本浏览器只会被翻译成
media="screen"
而不会去识别后面的 (min-width: 401px) and (max-width: 600px),所以说只要是screen媒体,不管宽度多宽,该样式表都会被渲染。
而假如加了only关键字的话,例如如下代码
media="only screen and (min-width: 401px) and (max-width: 600px)"
则会被翻译成
media="only"
因为并没有什么媒体类型是"only",所以浏览器也不会去渲染后面的样式表。
所以说白了,就是对于老版本浏览器,把这条样式表隐藏掉,仅此而已。
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.
前面没有解释过什么是媒体特性、媒体类型和媒体查询吧?一脸懵逼
作用就一个,就是忽略
比如写了一个样式里面有下面两条
@media only screen and (min-width:240px){body{background:red !important;}}
body{background:green;}
上面两条命令很简单,第一条当设备屏幕宽度大于240px时背景为红色,第二条背景为绿色
假设设备屏幕宽度为320px,如果设备支持媒体特性时,它的背景会显示为红色,如果设备不支持媒体特性但支持媒体类型时,此时它的背景会显示为绿色,即即使满足宽度大于240px但不支持媒体查询,所以不会应用媒体查询内部样式
十天精通CSS3
242553 学习 · 2623 问题
相似问题