作者 | 董雨
原文:https://24ways.org/2017/cascading-web-design
特性查询,即@supports规则,作为CSS2的扩展被引入CSS Conditional Rules Module Level3中,它在2011年首次作为工作草案发布。它是一个条件组规则,用来检测浏览器UA是否支持CSS的属性值,条件由逻辑与,逻辑或,逻辑非组合而成。
设计该功能的动机是允许作者在浏览器支持时使用新特性编写样式,同时在不支持的情况下优雅降级。即使CSS本身已经允许优雅降级,例如只要不破坏样式表中的其它样式,忽略不支持的属性值即可。但有时我们需要更多的东西。
说到底CSS是一种整体技术,即使你可以单独使用属性,但CSS充满力量的闪光点在组合使用时。在构建Web布局时尤其明显。在CSS中进行原生特性检测,使在最新浏览器使用尖端CSS技术,同时支持旧浏览器更为方便。
浏览器支持情况
Opera在2102年11月首次实现了特性查询,Chrome和Firefox在2013年5月紧随其后。多年来已有多篇关于特性查询的文章,但是,对其已经被广泛支持的现状似乎并不是众所周知的。早期对特性查询的大部分报道都不是用英文写的,也是这是其中一个限制因素。
@supports― CSSのFeature Queries by Masataka Yakura, August 8 2012
Native CSS Feature Detection via the @supports Rule by Chris Mills, December 21 2012
CSS @supports by David Walsh, April 3 2013
esponsive typography with CSS Feature Queries by Aral Balkan, April 9 2013
How to use the @supports rule in your CSS by Lea Verou, January 31 2014
CSS Feature Queries by Amit Tal, June 2 2014
Coming Soon: CSS Feature Queries by Adobe Web Platform Team, August 21 2014
CSS feature queries mittels @supports by Daniel Erlinger, November 27 2014
截止2017年12月,所有当前主流浏览