语法:
@supports (rule)[operator (rule)]* { sRules }
operator:or | and | not
取值:
- rule:
- 指定一条具体的CSS规则,必须使用括号包裹
- operator:
- 使用
or | and | not
等操作符指定多条规则。
说明:
检测是否支持某CSS特性
- 定义支持和不支持flex标准写法的浏览器分别使用不同的规则:
示例代码:
@supports ( display: flex ) { body { display: flex; } #aside { width: 210px; } #main { flex: auto; } } @supports not ( display: flex ) { #aside { float: left; width: 210px; } #main { overflow: hidden; *zoom: 1; } } 我们可以通过类似这样的写法来给不同的终端使用差异化的方案。
- 你也可以写多重规则来进行过滤:
示例代码:
@supports ( box-shadow: 2px 2px ) or ( -moz-box-shadow: 2px 2px ) or ( -webkit-box-shadow: 2px 2px ) { .demo { -moz-box-shadow: 2px 2px 0 rgba(0, 0, 0, .3); -webkit-box-shadow: 2px 2px 0 rgba(0, 0, 0, .3); box-shadow: 2px 2px 0 rgba(0, 0, 0, .3); } }
兼容性:
- 浅绿 = 支持
- 红色 = 不支持
- 粉色 = 部分支持
IE | Firefox | Chrome | Safari | Opera | iOS Safari | Android Browser | Android Chrome |
---|---|---|---|---|---|---|---|
6.0-11.0 | 2.0-21.0 | 4.0-27.0 | 6.0-8.0 | 15.0+ | 6.0-8.4 | 2.1-4.3 | 18.0-26.0 |
12.0+ | 22.0+ | 28.0+ | 9.0+ | 9.0+ | 4.4+ | 27.0+ |