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

示例: