入门:状态之间的隐式动画
transition 不像 @keyframes 那样主动播放,它的心智是监听:先声明「哪些属性、用多久、什么曲线、延迟多少」,之后只要这些属性的值因状态切换而改变——鼠标 :hover、键盘 :focus、加减 class、改内联样式——浏览器就自动在旧值与新值之间补间。
1 · 四个子属性
transition-property 决定过渡哪些属性(all 写起来简便,但会把意外的属性也一起补间,代价高);transition-duration 决定多久;transition-timing-function 决定什么快慢曲线;transition-delay 决定等多久再开始。它们也能合并成简写。
2 · 多属性与简写的顺序
多条过渡用逗号分隔,各自可有不同时长与曲线。简写 transition: property duration timing-function delay 里两个时间值按出现顺序解释:第一个是 duration,第二个才是 delay。写反了过渡会「迟迟不动」,却不报任何错。
建议 · 把 transition 理解成「声明加监听」而不是「播放」,很多行为就自然了:它没有播放头、不能循环、不会自动开始,只在被监听属性的值发生变化的那一刻补间一次。所以它和状态天然绑定(hover、focus、class、内联样式),也因此半路可逆。需要自动播放、循环或多关键帧时用 animation,二者取舍见 transition vs animation。