不能。CSS animation 简写属性仅支持单个动画序列,多个动画需拆分为 animation-name 等长写属性并严格按顺序一一对应,否则动画可能失效或错乱。
不能。CSS animation 简写属性只作用于**单个动画序列**,即使你写成 animation: fade 1s, slide 2s;,浏览器也会直接忽略整条声明——这不是语法错误,而是 CSS 规范明确不支持的写法。
真正生效的方式是:把多个动画名用空格分隔,再让其他子属性(animation-duration、animation-timing-function 等)也按相同顺序一一对应。顺序错一位,整个动画就乱套。
animation-name 必须列出所有动画名,如 fade slide bounce
animation-duration 也要三个值,如 0.3s 1.2s 0.6s,第一个匹配 fade,第二个匹配 slide
animation-delay,第三个自动取第一个)animation-iteration-count: infinite),就等价于 infinite infinite infinite
多个动画叠加时,最容易出问题的是 animation-fill-mode 和 animation-direction 的隐式覆盖。比如一个动画设了 forwards,另一个没写,后者会按默认 none 处理,导致最终样式被前者“锁住”而后者失效。
animation-fill-mode,不要依赖默认值animation-play-state 是全局控制的,设成 paused 会暂停所有动画,无法单独控制某一个animation-delay 必须对齐到对应位置,写成 0s 0.5s 0s 才能让中间那个晚半秒开始.box { animation-name: fadeIn, slideIn, pulse; animation-duration: 0.4s, 0.8s, 2s; animation-timing-function: ease-out, cubic-bezier(0.2, 0.8, 0.4, 1), ease-in-out; animation-iteration-count: 1, 1, infinite; animation-fill-mode: forwards, forwards, both;}
注意:这里没有用 animation 简写,因为一旦混用简写和长写,浏览器会按规范丢弃冲突部分。老老实实拆开写,反而更稳。
立即学习“前端免费学习笔记(深入)”;
多动画叠加不是靠堆简写,而是靠对齐命名与参数顺序——漏掉一个逗号、多一个空格、顺序错一格,都可能让某个动画完全不触发。