结合 CSS 媒体查询

Posted

技术标签:

【中文标题】结合 CSS 媒体查询【英文标题】:Combining CSS media queries 【发布时间】:2012-02-18 03:53:14 【问题描述】:

我想向打印页面 (media=print) 的人和在手机上浏览的人显示相同的 CSS 样式集。有没有办法可以组合 CSS 媒体查询?

有点像

@media only print or @media only screen and (max-device-width: 480px) 
  #container 
    width: 480px;
  
 

【问题讨论】:

相关:***.com/questions/7668301/… 【参考方案1】:

用逗号分隔:

@media only print, only screen and (max-device-width: 480px)

See the spec,特别是示例 VI(已添加重点):

多个媒体查询可以组合在一个媒体查询列表中。一种 以逗号分隔的媒体查询列表。如果一种或多种媒体 逗号分隔列表中的查询为真,整个列表为真, 否则为假。在媒体查询语法中,逗号表示 逻辑或,而“and”关键字表示逻辑与。

我怀疑第二个only 是必需的,所以你可以这样做:

@media only print, screen and (max-device-width: 480px)

【讨论】:

“only”运算符用于仅在整个查询匹配时应用样式,这对于防止旧版浏览器应用所选样式很有用。所以只需使用逗号...例如:如果您想在设备处于横向模式时应用样式:@media (min-width: 700px) and (orientation: Landscape) ... 【参考方案2】:

来自https://developer.mozilla.org/en/CSS/Media_queries

您可以将多个媒体查询组合在一个逗号分隔的列表中;如果 列表中的任何媒体查询为真,关联样式 应用表。这相当于逻辑“或”运算。

您只需删除第二个@media 并添加一些括号。

【讨论】:

以上是关于结合 CSS 媒体查询的主要内容,如果未能解决你的问题,请参考以下文章

在 CSS3 媒体查询中使用 Sass 变量

CSS媒体查询及其使用

CSS3媒体查询总结

CSS媒体查询总结

如何将此媒体查询与特定 ID 结合使用

scss Vanilla CSS媒体查询+ Sass媒体查询mixin