CSS.supports()检测容器查询需严格匹配语法,正确写法为CSS.supports('container-type: inline-size')或CSS.supports('(container-type: inline-size) and (container: fullWidth)'),错误写法如CSS.supports('container', 'fullWidth')会返回false。
可以直接用 CSS.supports() 检测容器查询是否可用,但要注意写法必须严格匹配规范语法。
容器查询不是靠单个属性值判断的,而是通过 @container 规则的语法结构来识别。浏览器只在支持完整容器查询能力时才返回 true,所以不能写成 CSS.supports('container-name', 'foo') 这类错误形式。
CSS.supports('container-type: inline-size')
CSS.supports('(container-type: inline-size) and (container: fullWidth)')
CSS.supports('container', 'fullWidth'),会返回 false
CSS.supports('container-type: size')(应为 inline-size 或 size)以下代码可直接运行,兼容 Chrome 110+、Firefox 119+、Safari 16.4+ 等已支持容器查询的版本:
CSS.supports('container-type: inline-size') —— 最基础且推荐的检测项,覆盖绝大多数使用场景CSS.supports('container-name: foo') —— 检测是否支持命名容器(部分旧实现可能不支持该子特性)CSS.supports('@container (min-width: 30em) { }') —— 不推荐,目前主流浏览器尚未支持对整个 @container 规则块的字符串检测JS 检测只是辅助手段,真正落地仍要靠 CSS 层级的渐进增强。建议这样配合使用:
立即学习“前端免费学习笔记(深入)”;
@supports (container-type: inline-size) 包裹容器查询样式截至 2026 年 4 月,容器查询已在 Chrome 110、Edge 110、Firefox 119、Safari 16.4 及以上版本中稳定支持。但 Android WebView 和部分 iOS 16 早期小版本仍可能返回 false,检测结果为 false 时应默认走传统响应式方案,不要报错或中断渲染。