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

如何调整CSS @keyframes文字轮播动画实现速度先慢后快再回落

实现方案

你要的初始极慢、逐渐加速、高速保持、最终减速回落的动画效果,可以通过调整animation-timing-function和@keyframes关键帧时间占比两种方式实现,具体修改如下:

方案1:不改动原有轮播逻辑,仅修改加速度曲线

如果不需要调整原有的4个文字轮播顺序,只是改变速率变化,直接给span的动画属性添加自定义贝塞尔曲线即可:

span{
  display: block;
  height: 100%;
  padding-left: 10px;
  color: #0e6ffc;
  /* cubic-bezier参数可按需调整,当前参数实现先慢、中快、后慢的速率 */
  animation: spin_words 5s infinite cubic-bezier(0.16, 0.02, 0.88, 0.98);
}

贝塞尔曲线的四个参数取值范围均为0-1,调整前两个参数可以改变初始加速斜率,调整后两个参数可以改变结尾减速斜率。

方案2:新增高速保持阶段,自定义分段速率

如果需要中间有一段持续高速轮播的效果,需要修改@keyframes的关键帧分布,给不同阶段配置对应的时间函数:

span{
  display: block;
  height: 100%;
  padding-left: 10px;
  color: #0e6ffc;
  /* 总时长按需调整,这里设为8s方便拆分四个阶段 */
  animation: spin_words 8s infinite;
}

@keyframes spin_words {
  /* 阶段1:0%-20% 初始极慢启动 */
  0% {
    transform: translateY(0);
    animation-timing-function: ease-in;
  }
  20% {
    transform: translateY(-100%);
    animation-timing-function: ease-in;
  }
  /* 阶段2:20%-40% 逐渐加速到峰值 */
  30% {
    transform: translateY(-300%);
  }
  40% {
    transform: translateY(-500%);
    animation-timing-function: linear;
  }
  /* 阶段3:40%-70% 高速匀速保持 */
  50% {
    transform: translateY(-1000%);
  }
  60% {
    transform: translateY(-1500%);
  }
  70% {
    transform: translateY(-2000%);
    animation-timing-function: ease-out;
  }
  /* 阶段4:70%-100% 减速回落至低速 */
  85% {
    transform: translateY(-1200%);
  }
  100% {
    transform: translateY(-400%);
  }
}

你可以根据自己需要的高速保持时长、轮播次数,调整对应区间的关键帧位移和时间占比。

注意:100%关键帧的位移值需要和你实际轮播的文字数量匹配,保证动画循环衔接时没有突兀跳变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:57:03