container-progress() 不是标准 css 函数,不存在于任何浏览器或规范中;真正存在的是仅限 @container 查询条件中使用的 progress(),且仅 safari 支持,不能用于样式声明。

container-progress() 不是标准 CSS 函数,也不存在于任何浏览器引擎或 CSS 规范中。它不会生效,写上去只会被忽略。
为什么找不到 container-progress() 的文档或示例
这个名称看起来像是把 progress()(CSS 容器查询中的实验性函数)和“容器进度”概念混搭出来的误传。CSS 中真正存在的是 progress(),但它只在部分浏览器(如 Safari 16.4+)的容器查询实验性支持中出现,且仅用于 @container 查询条件,**不能用在样式声明里作为值函数**。
-
progress()只能出现在@container (inline-size: progress(0% 100%))这类查询条件中,用于定义尺寸范围的相对区间 - 它不返回数值,也不接受容器元素尺寸作为输入,更不会映射为“连续比例值”
- 没有
container-progress()、container-size()或类似命名的 CSS 函数
想把容器宽度映射成比例值?实际可用的替代方案
如果你的目标是:根据父容器宽度动态计算一个比例值(比如 0–1 之间),并用它控制颜色、缩放、透明度等,目前只能靠间接方式实现:
- 用
container-type: inline-size+@container配合多个断点模拟“分段线性映射”,但无法做到真正连续 - 用 CSS 自定义属性(
--width-ratio)配合 JavaScript 监听ResizeObserver实时更新,再在 CSS 中使用该变量(例如scale: calc(var(--width-ratio) * 2);) - 若只需响应式布局而非精确比例,优先用
clamp()或视口单位(vw)替代——它们更稳定、无需 JS
常见错误现象和调试建议
在 DevTools 中看到 container-progress() 被标红、样式不生效、控制台无报错但值没变化,基本可以确定是函数名拼错或根本不存在。
- 检查是否混淆了
progress()(仅限@container查询)和设想中的“运行时计算函数” - Safari 是目前唯一实现
progress()的浏览器,Chrome / Firefox 完全不支持,不要依赖它做核心逻辑 - 如果用了
progress(25% 75%)却发现容器未触发查询,确认父元素设置了container-type: inline-size且有明确宽度(不能是display: contents或无约束的 flex item)
真正连续的比例映射目前必须由 JS 驱动,CSS 本身没有提供运行时读取容器尺寸并输出数值的函数。别在 CSS 里硬写不存在的函数名,先明确你要驱动的是动画、布局还是状态,再选 JS + 自定义属性,或者接受 CSS 原生能力的边界。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











