CSS3 翻译多次?

CSS3 Translate multiple times?

我的基本场景是这样的:

我不知道如何完全按照我的意愿完成此操作。

我的代码如下:

.box {
  background: red;
  width: 30px;
  height: 30px;
  position: absolute;
  top: 0px;
  right: 0px;
  animation: nudge 5s linear;
}
@keyframes nudge {
  50% {
    transform: translate(-5650px, 155px);
  }
}
<div class="box"></div>

使用100% {transform: translate(-5650px, 155px);}代替50% {transform: translate(-5650px, 155px);}

.box {
   background: red;
   width: 30px;
   height: 30px;
   position: absolute;
   top: 0px;
   right: 0px;
   animation: 
   nudge 2s linear;
}

@keyframes nudge {  
   100% {
      transform: translate(-2560px, 155px);
   } 
}
<div class="box"></div>

默认情况下动画是这样工作的。也就是说,元素会在动画完成后立即回到原来的位置(除非 animation-fill-mode 设置为 forwards)。

您的问题出在 keyframes 设置上。当您将变换设置为发生在 50% 并且您的初始 transform 状态为 null 时,元素将逐渐从原始位置(无变换)移动到动画前 50% 的平移位置,然后在接下来的 50% 中,逐渐从结束位置再次回到原来的位置。您可以通过将关键帧设置为 100% 来避免它。

.box {
   background: red;
   width: 30px;
   height: 30px;
   position: absolute;
   top: 0px;
   right: 0px;
   animation: nudge 5s linear;
}

@keyframes nudge {  
   100% {
      transform: translate(-5650px, 155px);
   } 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div class="box"></div>