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

CSS animation效果不符预期,如何实现元素右移后自动复位循环?

你当前的动画默认单向播放,每次循环时会直接跳回起始位置,没有平滑回退的过渡效果。你添加transition不生效的原因是,transition仅作用于元素属性的状态切换(如hover、类名变更触发的属性变化),@keyframes控制的动画优先级更高,不会受transition影响。

以下是两种可行的解决方案:

方案1:启用alternate动画方向

你代码中已经写好了animation-direction: alternate属性,只是被注释了,取消该属性的注释即可。该属性会让动画奇数次正向播放、偶数次反向播放,自然实现移动到终点后平滑退回初始位置的效果。
修改后的核心CSS如下:

.square3 {
  height: 100px;
  width: 200px;
  background-color: #f56d4a;
  margin-bottom: 20px !important;
  position: absolute;
  animation-name: shift;
  animation-duration: 3s;
  animation-timing-function: linear;
  animation-delay: 0.7s;
  animation-direction: alternate; /* 取消这行的注释 */
  animation-iteration-count: infinite;
}

@keyframes shift{
    from{
        left: 0;
    }to{
        left: 100px;
    }
}

方案2:修改@keyframes规则实现往返

如果不想调整动画方向属性,也可以直接修改关键帧规则,把回到初始位置的逻辑加入帧定义中:

@keyframes shift{
    0% {
        left: 0;
    }
    50% {
        left: 100px;
    }
    100% {
        left: 0;
    }
}

这种方案下不需要修改animation-direction属性,动画总时长3s的情况下,前1.5s右移到终点,后1.5s左移回初始位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:06:00