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

CSS分步动画失效问题:steps()函数未生效,请求帮助修复

问题分析与修复方案

问题描述

需要实现粉色圆点在三个灰色圆点上方分步跳动的效果,但当前粉色圆点呈现连续平滑移动的状态,尝试使用steps(3)、steps(3, end)均未达到预期效果。

原因分析

问题出在动画关键帧(@keyframes)的定义和steps()函数的配合逻辑上:

  • 当前的@keyframes设置了0%、50%、100%三个关键帧,这会把动画拆成两段连续过渡:前0.5秒从left:0移动到left:1.5rem,后0.5秒从left:1.5rem移动到left:3rem。
  • steps(3)是作用于整个动画的时间线,但由于中间的50%关键帧强制了一段平滑过渡,steps()的离散拆分逻辑被打断,最终还是呈现连续移动的效果。

修复方案

方案1:简化关键帧,依赖steps()实现分步

去掉中间的50%关键帧,只保留起始和结束位置,让steps(3)自动将整个移动过程拆分为3个离散步骤:

.DotLoader div {
  position: absolute;
  height: 1rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background-color: pink;
  left: 3rem;
  animation: moveSpinner 1s steps(3, end) infinite;
}

@keyframes moveSpinner {
  0% {
    left: 0;
  }
  100% {
    left: 3rem;
  }
}

方案2:明确定义每一步的关键帧

如果需要更精准控制每一步的停留位置,可以直接定义多组关键帧,让动画在每个目标位置停留:

.DotLoader div {
  position: absolute;
  height: 1rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background-color: pink;
  left: 3rem;
  animation: moveSpinner 1s steps(3, end) infinite;
}

@keyframes moveSpinner {
  0% { left: 0; }
  33.33% { left: 0; }
  33.34% { left: 1.5rem; }
  66.66% { left: 1.5rem; }
  66.67% { left: 3rem; }
  100% { left: 3rem; }
}

两种方案都能实现粉色圆点分步跳动的效果,方案1更简洁,方案2适合需要自定义每步停留时长的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:55:32