You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同时执行两个CSS动画时,animation-delay属性不生效问题

问题原因与解决方案

问题根源

你在同一个内联样式里重复声明了animation-name、animation-duration等动画属性,CSS的核心规则是后定义的同名属性会直接覆盖前面的。也就是说,你写的第一个active动画的所有配置(包括延迟时间)都被后面的inactive动画配置覆盖了,实际页面中只有inactive动画在运行。你看到的“第一个动画正常执行”,大概率是浏览器渲染时的短暂残留,或者两个动画的关键帧初始状态有重叠,导致视觉上产生误解。

正确写法

要给同一个元素添加多个独立的CSS动画,必须在同一个动画属性中用逗号分隔每个动画的完整配置,避免属性覆盖。以下两种写法都可行:

写法1:使用animation简写属性

<div class="topicLiRung" style='animation: active 3s ${weekData.delay}s forwards, inactive 3s ${weekData.inactive}s forwards;'>${weekData.topic}</div>

写法2:拆分单个动画属性(用逗号分隔多值)

<div class="topicLiRung" style='
    animation-name: active, inactive;
    animation-duration: 3s, 3s;
    animation-delay: ${weekData.delay}s, ${weekData.inactive}s;
    animation-fill-mode: forwards, forwards;
'>${weekData.topic}</div>

额外说明

animation-fill-mode: forwards会让动画结束后停留在最后一帧的状态,只要你设置的${weekData.inactive}s大于${weekData.delay}s + 3s(第一个动画的延迟+时长),就能实现“先从黑色渐变到绿色,等待指定时长后再渐变到深绿色”的效果。

内容的提问来源于stack exchange,提问作者Wan33

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:24:18