最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
HTML中CSS animation简写属性:一次性声明多个动画参数
时间:2026-06-24 09:45:47 编辑:袖梨 来源:一聚教程网
不能。CSS animation 简写属性仅支持单个动画序列,多个动画需拆分为 animation-name 等长写属性并严格按顺序一一对应,否则动画可能失效或错乱。
animation 简写属性能同时设多个动画吗?
不能。CSS animation 简写属性只作用于**单个动画序列**,即使你写成 animation: fade 1s, slide 2s;,浏览器也会直接忽略整条声明——这不是语法错误,而是 CSS 规范明确不支持的写法。
想同时运行多个动画,得用 animation-name 配合其他简写子属性
真正生效的方式是:把多个动画名用空格分隔,再让其他子属性(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 简写,因为一旦混用简写和长写,浏览器会按规范丢弃冲突部分。老老实实拆开写,反而更稳。
立即学习“前端免费学习笔记(深入)”;
多动画叠加不是靠堆简写,而是靠对齐命名与参数顺序——漏掉一个逗号、多一个空格、顺序错一格,都可能让某个动画完全不触发。