问答详情
源自:11-3 Media Queries使用方法

关于only在支持media type浏览器中的意义

;表示不支持媒体特性但又支持媒体类型的设备,这样就会不读样式,因为其先会读取only而不是screen; 这句话怎么理解?网上找了一圈也没有解释清除,only在支持media type的浏览器时的作用。

提问者:慕瓜0564237 2017-09-29 15:22

个回答

  • cry_shoulder
    2020-03-03 23:46:37

    https://stackoverflow.com/questions/8549529/what-is-the-difference-between-screen-and-only-screen-in-media-queries/

    我看了下一篇老外的讲解,链接在上面,第二条回答就是,感兴趣的可以去看看。

    假如有如下代码

    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.

  • 慕数据3446481
    2019-05-25 21:56:49

    前面没有解释过什么是媒体特性、媒体类型和媒体查询吧?一脸懵逼


  • 爱上慕婉清6262634
    2017-10-11 16:05:06

    作用就一个,就是忽略

    比如写了一个样式里面有下面两条

    @media only screen and (min-width:240px){body{background:red !important;}}

    body{background:green;}

    上面两条命令很简单,第一条当设备屏幕宽度大于240px时背景为红色,第二条背景为绿色

    假设设备屏幕宽度为320px,如果设备支持媒体特性时,它的背景会显示为红色,如果设备不支持媒体特性但支持媒体类型时,此时它的背景会显示为绿色,即即使满足宽度大于240px但不支持媒体查询,所以不会应用媒体查询内部样式