@supports
目前仅测试属性/值组合,仅此而已。您的其他选项无效,因为它们都不有效(包括最后一个选项,其中仅带有at- 关键字,后跟大括号!)。属性/值对的要求由的语法决定@supports
,您可以在spec中找到它。
只需测试一个已知的属性/值对,即可确保无论@supports
实现与否,该属性/值对都能在所有用户代理中正常工作。这种(某种)消除了您会遇到实现@supports
但不实现属性/值组合的用户代理的可能性,@supports
而只关注其支持。
您给出的示例display: block
就足够了。您使用级联的检查,如果浏览器 不 实现@supports
由内覆盖声明@supports
为浏览器规则 不 支持它也是可以接受的(是唯一明显的方法也无妨)。