CSS 使用媒体查询进行特征检测
CSS feature detection using media queries
我正在尝试检测浏览器是否支持 transform
属性。
为此,我包装了我想要在媒体查询中支持 transform
时应用的代码:
@media (transform: none) {
// My code
}
使用此代码,不会触发此部分。
transform
的初始状态是none
所以我想知道为什么它不触发...
从the most recent media queries spec来看,这是不可能的。
此外,引用规范中的 here:
CSS renderers must treat as invalid (and ignore as appropriate) any at-rules, properties, property values, keywords, and other syntactic constructs for which they have no usable level of support.
忽略里面的任何内容都是为了遵守规范。
是的,这是真的。您无法使用媒体查询检测功能(仅作记录)。但您可以改用特征查询。
You can detect CSS features with "feature queries" (the @supports
rule).
@supports (transform: none) {
// browser supports transform property
}
@supports not (transform: none) {
// browser doesn't support transform property
}
但是这个特定示例(针对 transform
属性 的特征检测)有点棘手。如果我们看一下 caniuse,我们可以看到有一个 some browser that don't support the @supports
rule but actually support the transform
property(例如 IE9-11)。
那些浏览器会检测到 false 假的,这么说。这些浏览器将忽略功能查询,即使它们支持我们想要检测的实际功能。
我正在尝试检测浏览器是否支持 transform
属性。
为此,我包装了我想要在媒体查询中支持 transform
时应用的代码:
@media (transform: none) {
// My code
}
使用此代码,不会触发此部分。
transform
的初始状态是none
所以我想知道为什么它不触发...
从the most recent media queries spec来看,这是不可能的。
此外,引用规范中的 here:
CSS renderers must treat as invalid (and ignore as appropriate) any at-rules, properties, property values, keywords, and other syntactic constructs for which they have no usable level of support.
忽略里面的任何内容都是为了遵守规范。
是的,这是真的。您无法使用媒体查询检测功能(仅作记录)。但您可以改用特征查询。
You can detect CSS features with "feature queries" (the @supports
rule).
@supports (transform: none) {
// browser supports transform property
}
@supports not (transform: none) {
// browser doesn't support transform property
}
但是这个特定示例(针对 transform
属性 的特征检测)有点棘手。如果我们看一下 caniuse,我们可以看到有一个 some browser that don't support the @supports
rule but actually support the transform
property(例如 IE9-11)。
那些浏览器会检测到 false 假的,这么说。这些浏览器将忽略功能查询,即使它们支持我们想要检测的实际功能。