0

0

css动画多元素依次播放方法_使用不同delay设置顺序动画

P粉602998670

P粉602998670

发布时间:2026-02-06 11:20:02

|

905人浏览过

|

来源于php中文网

原创

animation-delay通过错开各元素动画启动时机实现依次播放,如0s、0.2s、0.4s;需避免display/visibility干扰,推荐CSS变量或:nth-child配合JS动态设置,优先使用transform/opacity保障性能。

css动画多元素依次播放方法_使用不同delay设置顺序动画

animation-delay 控制多元素依次播放的原理

多个元素使用同一套 @keyframes 动画时,靠给每个元素设置不同的 animation-delay 值,就能实现“一个接一个”播放的效果。关键不是动画本身有多复杂,而是每个元素的启动时机错开了——比如第一个元素 animation-delay: 0s,第二个 animation-delay: 0.2s,第三个 animation-delay: 0.4s,以此类推。

注意:这个 delay 是相对于元素进入渲染流程(或满足触发条件)的时间点开始计算的。如果元素是静态 HTML,那基本就是页面加载完成、样式计算完毕后立即生效;如果是动态插入的节点,delay 从它被 append 到 DOM 后才开始计时。

实际写法:循环生成 delay 值最稳妥

手动给每个元素写不同 animation-delay 容易出错,尤其元素数量多或后续要增删时。推荐用 CSS 自定义属性 + :nth-child() 或 JS 动态注入。

  • 纯 CSS 方案(适合固定结构):
    div.item {
      animation: fade-in 0.3s ease-out;
    }
    div.item:nth-child(1) { animation-delay: 0s; }
    div.item:nth-child(2) { animation-delay: 0.15s; }
    div.item:nth-child(3) { animation-delay: 0.3s; }
    div.item:nth-child(4) { animation-delay: 0.45s; }
  • 更灵活的 CSS 变量方案(需配合 JS 初始化一次):
    div.item {
      --delay: 0s;
      animation: slide-up 0.4s cubic-bezier(0.2, 0.8, 0.4, 1) var(--delay);
    }
    然后用 JS 给每个 div.item 设置 style.setProperty('--delay', `${i * 0.15}s`)
  • 避免直接用 transition-delay 替代——它只对属性变化生效,不适用于完整动画周期控制

常见翻车点:动画重播、父容器 visibility / display 干扰

即使设置了 animation-delay,也可能出现“全卡住不动”或“突然一起播”,多数是因为父级容器用了 visibility: hiddendisplay: none 切换状态。

稿定AI
稿定AI

拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能

下载

立即学习前端免费学习笔记(深入)”;

  • display: none 会让子元素完全脱离渲染流,animation-delay 会重置,等 display: block 后才重新计时——但此时所有元素几乎同时触发
  • visibility: hidden 虽保留布局,但部分浏览器(尤其是旧版 Safari)会暂停其内部动画计时器
  • 解决办法:用 opacity: 0; pointer-events: none; 配合 transform: translateY(20px) 来“隐藏”,确保动画能正常预热和延迟启动
  • 如果需要反复播放,记得加 animation-fill-mode: backwards,否则 delay 期间元素会显示初始态而非动画第一帧

性能提醒:大量元素 + 复杂动画容易掉帧

每多一个元素,就多一个独立的动画计时器在运行。当列表超过 20+ 项、且动画含 box-shadowfilter 或频繁重排属性(如 heightwidth)时,主线程压力明显上升。

  • 优先用 transformopacity——它们走合成层,不触发布局重算
  • 避免在 @keyframes 中写 left/top,改用 transform: translateX()
  • 移动端慎用 animation-timing-function: steps() 配合大量元素,某些 Android Webview 渲染不稳定
  • 真要处理长列表?考虑只对视口内元素启用动画,其余用 animation: none 先关掉

delay 的数值精度其实没那么重要,0.05s 和 0.07s 在人眼看来没区别,但设成 0.1s 整数倍更容易调试和维护。真正难的是让动画节奏和交互反馈对得上——比如按钮点击后,列表入场 delay 得跟点击反馈的微交互动画衔接上,这点常被忽略。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

610

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

610

2023.08.10

append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

345

2023.10.25

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

1077

2023.11.14

python中append的含义
python中append的含义

本专题整合了python中append的相关内容,阅读专题下面的文章了解更多详细内容。

177

2025.09.12

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

516

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

307

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

402

2023.08.03

1688阿里巴巴货源平台入口与批发采购指南
1688阿里巴巴货源平台入口与批发采购指南

本专题整理了1688阿里巴巴批发进货平台的最新入口地址与在线采购指南,帮助用户快速找到官方网站入口,了解如何进行批发采购、货源选择以及厂家直销等功能,提升采购效率与平台使用体验。

49

2026.02.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.2万人学习

CSS教程
CSS教程

共754课时 | 28万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号