检测当前浏览器对CSS属性的支持
display: grid浏览器兼容性检测工具回答一个很具体的问题:你现在正在使用的这个浏览器,能不能识别某一条 CSS 声明,比如 display: grid 或者 text-wrap: balance。你输入一个 CSS 属性名和一个属性值,页面会立刻告诉你当前浏览器支持还是不支持。它背后用的是浏览器自带的 CSS.supports 接口。需要先说明它不能做的事:它只能检测「当前这一个浏览器」,不能一次列出 Chrome、Firefox、Safari 各个版本的对比表;它也不检测 JavaScript 接口或 HTML 特性,只检测 CSS 的属性与值。
有一个不依赖具体浏览器的例子:把属性名填成 display、属性值填成 banana,结果一定是「不支持」,因为 banana 根本不是 display 的合法取值。这说明红色叉号可能有几种含义:属性名拼错了、取值不合法,或者这个浏览器确实太旧没有实现这个功能。所以看到「不支持」时,先检查拼写、单位和格式,例如 aspect-ratio 的值写成 16/9 是对的。至于 text-wrap: balance、container-type: inline-size 这类较新的特性,结果就取决于你用的浏览器及版本,同一个页面在新旧浏览器里打开,结果可能不同;这也是它的实际用处:检查某位用户的浏览器能不能识别你准备使用的写法。我们不在文中列出具体的浏览器版本号,因为这些信息会随版本更新而变化。
不能。它只告诉你「现在这个浏览器」的结果。要查版本信息,请使用专门的兼容性数据库,并结合你的用户实际使用的浏览器统计来决定是否要做降级处理。
不是。支持只代表你当前这个浏览器能识别这条声明。别的浏览器、别的版本、开启了不同设置的浏览器可能结果不同。正式上线前仍需要在目标浏览器里实际测试。
代码把你填的属性名和值原样交给浏览器的 CSS.supports 接口,所以像 -webkit-backdrop-filter 这样带前缀的写法是可以直接填写测试的,结果由浏览器判定。我们没有为此设计专门的示例按钮。
常见原因是值的格式不对,比如缺少单位、多了分号、大小写或空格不符合语法。请只填值本身,不要带分号,也不要把整条声明塞进一个输入框。另一个可能是这个浏览器确实不支持。
检测完全在你的浏览器里完成,工具直接调用 CSS.supports,没有任何网络请求,你输入的内容不会被发送或保存到服务器。刷新页面后输入框会回到默认值。