使用animation-delay属性可实现CSS动画顺序播放,通过为不同元素设置递增延迟时间,如li:nth-child(n)分别延迟0s、0.2s、0.4s等,结合slideIn动画使列表项依次滑入,形成流畅的序列效果。

要让 CSS 动画实现顺序播放效果,关键是使用 animation-delay 属性为不同元素设置不同的延迟时间,从而形成依次执行的动画序列。
理解 animation-delay 的作用
animation-delay 定义动画开始前等待的时间,单位可以是秒(s)或毫秒(ms)。即使多个元素使用相同的动画名称和持续时间,通过设置不同的延迟值,就能控制它们在不同时间点启动。
例如:
.animation-1 { animation-delay: 0s; }.animation-2 { animation-delay: 0.5s; }
.animation-3 { animation-delay: 1s; }
这样三个元素会每隔 0.5 秒依次开始动画。
立即学习“前端免费学习笔记(深入)”;
实际应用:列表项依次飞入
假设有一组列表项,希望它们从右侧依次滑入视野:
- 给每个
设置相同的动画名称和时长 - 利用子元素索引递增 delay 值
- 推荐使用 :nth-child 选择器分配延迟
示例代码:
@keyframes slideIn {from { transform: translateX(100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
li {
animation: slideIn 0.6s ease-out forwards;
}
li:nth-child(1) { animation-delay: 0s; }
li:nth-child(2) { animation-delay: 0.2s; }
li:nth-child(3) { animation-delay: 0.4s; }
li:nth-child(4) { animation-delay: 0.6s; }
简化写法:使用 calc() 函数(可选)
现代浏览器支持用 calc() 结合计数器动态计算延迟,减少重复代码:
li {--delay: calc(0.2s * (var(--index) - 1));
animation: slideIn 0.6s ease-out forwards;
animation-delay: var(--delay);
}
虽然 CSS 原生不支持自动变量递增,但配合 JavaScript 设置自定义属性 index 可实现更灵活控制。对于静态内容,手动写延迟更稳妥可靠。
基本上就这些。合理安排 delay 时间间隔,就能做出流畅的顺序动画效果,常见于欢迎页、引导提示或菜单展开等场景。










