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

纯CSS实现的Keyframes Animation切换移动方向时无过渡如何修复

问题原因

你编写的关键帧规则没有为每个时间节点同时显式定义top和left两个属性的取值,浏览器自动插值计算过渡状态时,两个属性的动画周期会发生重叠,没有按照「先竖直移动、再水平移动」的顺序执行,因此会出现过渡不平滑、圆点走斜线路径的问题。

修复方案

调整@keyframes规则,每个百分比节点同时写全top和left的取值,保证每个动画阶段内只有一个属性发生变化,另一个属性保持固定值即可。另外不需要额外设置transition属性,CSS Animation本身会处理属性的平滑过渡,二者混用反而可能出现预期外的效果。

修复后完整代码
* {
  margin: 0;
  padding: 0;
}

#dot {
  height: 10px;
  width: 10px;
  background: #000;
  border-radius: 100%;
  position: absolute;
  animation: moveDotOne 2s infinite;
  top: 0;
  left: 0;
}

@keyframes moveDotOne {
  0% {
    top: 0;
    left: 0;
  }
  25% {
    top: 20px;
    left: 0;
  }
  50% {
    top: 20px;
    left: 20px;
  }
  75% {
    top: 0;
    left: 20px;
  }
  100% {
    top: 0;
    left: 0;
  }
}
<div id="dot"></div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:39:03