transition-behavior 在 firefox 129+ 中不可用,它不是标准 css 属性,也未被任何浏览器实现;firefox 的 transition 问题实际源于 transition-delay 为 0 时缺单位、height: auto/display 不可过渡、var() 在 linear-gradient 中不支持插值,以及值未真实变化。

transition-behavior 在 Firefox 129+ 中**不可用**,它根本不是标准 CSS 属性,也未被任何浏览器实现。
Firefox 129+ 并不支持 transition-behavior
你可能在某些实验性文档、旧草案或误传的博客里看到过 transition-behavior,但它从未进入 CSS Transitions Level 2 或 Level 3 规范草案的正式阶段。截至 2026 年 8 月,Firefox(包括 129 及后续版本)、Chrome、Safari 均无该属性的实现痕迹——开发者工具里输入 transition-behavior 会直接标为无效,控制台无警告,CSS 规则整行被忽略。
常见混淆来源:
- 把
scroll-behavior记错成transition-behavior - 误读早期 CSSWG 讨论帖中关于“过渡触发策略”的设想性描述
- 将第三方库(如 Framer Motion)的 JS 配置项名当成了原生 CSS 属性
真正影响 transition 行为的关键点其实是 transition-property 和触发时机
Firefox 对 transition 的“行为差异”其实都落在已有标准属性上,而非某个叫 transition-behavior 的新东西。真正需要检查的是:
-
transition-property是否写对了可动画属性(比如写了display或height: auto,它们根本不可过渡) - 状态切换是否真实发生:JS 改 class 后,用
getComputedStyle(el).backgroundColor确认值确实变了,而不是被层叠覆盖或设成了相同值 -
transition-delay为0时是否带单位(0s或0ms)——这是 Firefox 最常静默失效的点 - 是否依赖
background: linear-gradient(var(--c1), var(--c2))做颜色过渡——Firefox 不支持对var()在渐变中的插值,会跳变
想控制过渡“是否启用”或“分组响应”,得用现有方案组合
没有 transition-behavior: allow | deny | group 这种语法,但你可以通过以下方式达到类似目的:
- 用
transition: none临时禁用:比如 JS 动画前加el.style.transition = 'none',一帧后恢复 - 用独立 class 控制不同过渡组:
.card--hover { transition: transform 0.2s; }vs.card--open { transition: max-height 0.4s ease-in-out; } - 用
@property声明自定义属性并指定syntax: '<color>'</color>,再配合transition: --my-color——但注意:Firefox 目前(v129)仍不支持对@property驱动的background渐变做插值,仅适用于color、border-color等直接受控属性
别在代码里留 transition-behavior,它不会生效,也不会报错,只会让你花半小时在开发者工具里反复刷新找“为什么没反应”。Firefox 的 transition 问题,几乎全出在已有的四个基础参数和触发条件上——盯住 0s、auto、var() 在渐变里、以及“值到底变没变”这四件事,比找一个不存在的属性高效得多。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











