CSS @supports 规则
定义和用法
CSS @supports 规则用于测试浏览器是否支持某个 CSS 特性,并在不支持时定义备用样式。
实例
如果浏览器支持 display: grid,则应用 @supports 规则内的 CSS。如果不支持,则应用 @supports 规则外的 .container 类样式:
/* 如果浏览器不支持 display: grid,则使用此 CSS */
.container {
display: table;
width: 90%;
background-color: #2196F3;
padding: 10px;
}
/* 如果浏览器支持 display: grid,则使用此 CSS */
@supports (display: grid) {
.container {
display: grid;
grid: auto;
grid-gap: 10px;
background-color: #2196F3;
padding: 10px;
}
}
CSS 语法
@supports (supports-condition) {
/* 如果条件为真,则应用此 CSS */
}
属性值
| 值 | 描述 |
|---|---|
| supports-condition |
定义以名称-值对(property: value)或 function() 语法表示的条件。 条件可以通过 and、or 或 not 组合。 |
| selector() |
是 function() 语法。检查浏览器是否支持指定的选择器语法。 例如,@supports selector(h2 > p) 如果浏览器支持子组合器,则返回 true 并应用 CSS 样式。 |
| font-tech() |
是 function() 语法。检查浏览器是否支持指定的字体技术。 例如,@supports font-tech(color-svg) 如果浏览器支持 SVG 多色表格,则返回 true 并应用 CSS 样式。 |
| font-format() |
是 function() 语法。检查浏览器是否支持指定的字体格式。 例如,@supports font-format(woff) 如果浏览器支持 WOFF 1.0,则返回 true 并应用 CSS 样式。 |
浏览器支持
表格中的数字表示首个完全支持该 @ 规则的浏览器版本。
| @ 规则 | Chrome | Edge | Firefox | Safari | Opera |
|---|---|---|---|---|---|
| @supports | 28 | 12 | 22 | 9 | 12.1 |
| font-format() | 108 | 108 | 106 | 17 | 94 |
| font-tech() | 108 | 108 | 106 | 17 | 94 |
| selector() | 83 | 83 | 69 | 14.1 | 69 |