【问题标题】:non-webkit browsers ignore @media queries with webkit-specific features非 webkit 浏览器会忽略具有 webkit 特定功能的 @media 查询
【发布时间】:2014-03-23 02:39:05
【问题描述】:

我正在尝试传递以下@media 查询,但它在所有非 webkit 浏览器中都被忽略:

@media not all and (-webkit-transform-2d) and (-webkit-transform-3d) and (-webkit-transform) {[...]}

我期望发生的是,所有三个特性都没有返回 true 的所有 webkit 浏览器都通过了,这也是发生的情况。

同样,基于@media 查询上的Safari documentation,我希望所有非 webkit 浏览器在所有三个功能上都返回 false,因为它们不支持它们,但 @media 查询被忽略了。

我查看了W3C documentation,但我不确定如何正确解释它。

谁能帮我找到错误或其他方式来设置浏览器中未在查询中返回 true 的元素样式?

我对 JavaScript 解决方案不感兴趣。

谢谢。

顺便说一下,特定于供应商的@viewport 查询也因某种原因被忽略了。

【问题讨论】:

  • 这应该不足为奇,非 webkit 浏览器不会理解 webkit 特定属性...这些是实验性属性,您需要使用所有供应商前缀才能获得完全支持。是的,这确实很糟糕。
  • 这就是我的怀疑。我以为我在文档中读到不受支持的功能会返回 false,但我想这不是真的。那么这是否意味着每个供应商都有等价物,例如-moz-transform-3d
  • 你应该对 webkit 和其他的 appart 规则进行排序,你可以使用 @support 规则覆盖你的默认规则。

标签: css webkit media-queries


【解决方案1】:

您可以改用条件规则@supporthttp://www.w3.org/TR/css3-conditional/#at-supports

【讨论】:

  • 这条规则的支持范围有多广?这听起来像是一个完美的解决方案,比我希望的要好得多,但它看起来还没有在所有主要浏览器中实现。我不想陷入无限循环尝试做@supports (@supports (@supports (...:P
  • 没关系,我找到了实现here 功能的浏览器的完整列表。我现在要这样做。感谢您的帮助!
  • 实际上,重要的是要知道 webkit 是否支持它,因为您检查它以提供特定的 webkit 规则,请参阅caniuse.com/#search=@support(显然是 safari)
  • 是的,但对于不需要的浏览器,我需要一个@supports (not ([...])) {[...]}。否则,如果我在 @supports 规则之外添加样式以说明不支持该规则的浏览器,那么支持该规则的浏览器将被设置两次样式。
  • 如果你使用前缀 webkit ,除了 webkit 没有其他浏览器会响应,不需要检查 not :) ,如果需要,在这里恢复你要删除的规则的默认值
猜你喜欢
  • 2013-04-06
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多