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

如何用CSS实现非等速steps动画?(宽度3段前快后慢)

实现非线性步进的宽度动画(纯CSS)

直接通过自定义关键帧+指定时间占比就能实现,不用嵌套多个div,步骤很简单:

  1. 定义关键帧,明确三个步进的宽度节点,同时按需求分配每个阶段的时间占比。比如假设总动画时长要让前两个阶段各占20%,最后一个占60%,关键帧可以这么写:
@keyframes width-step {
  0% { width: 0%; }
  20% { width: 33.33%; } /* 第一个步进,20%时长完成跳变 */
  40% { width: 66.66%; } /* 第二个步进,再用20%时长完成跳变 */
  100% { width: 100%; }  /* 最后一个步进,用剩下60%时长完成跳变 */
}
  1. 给目标div应用动画,用step-end作为时间函数,保证每个关键帧点直接跳变,符合步进动画的需求:
.target-div {
  width: 0%;
  height: 40px;
  background: #2196F3;
  animation: width-step 5s step-end forwards;
  /* forwards 让动画结束后停在最后一帧 */
}

你可以根据实际需求调整总时长(比如把5s改成你需要的时间),或者修改关键帧里的百分比——比如想让前两个阶段更快,把20%改成15%、40%改成30%,剩下70%给最后一个阶段就行。

这种方法完全纯CSS,代码简洁,还能精准控制每个步进的时间占比,刚好匹配你要的“前两个阶段快,最后一个慢”的非线性步进效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:22:12