@supports

语法:

@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+

示例:

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号:画漫画的程序员,每天早上8点30分准时推送:前端前沿资讯、大厂面试题、程序员轶事、职场感悟等,一起进步!

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界