如何用CSS动画猫的步骤?

2uluyalo  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(127)

我想用CSS动画来模仿猫的脚步。我尝试在容器中动画每个paw(div容器中的img元素),并为容器本身从下到上制作另一个动画。但它看起来就像一个滑动。
使用HTML div元素和.animation-container类来制作一个带有猫爪图像的块,用于CSS动画。使用CSS样式对容器进行定位并限制宽度和高度.

/* CSS container setup */

.animation-container {
  position: absolute;
  bottom: -200px;
  right: 100px;
  width: 350px;
  height: 400px;
  /*opacity: 0;*/
}

.paw-1,
.paw-2,
.paw-3,
.paw-4 {
  margin-right: 20px;
  width: 100px;
  height: 100px;
}

.paw-1,
.paw-2 {
  margin-bottom: 100px;
}

/* CSS animation for each paw start */

.animation-container {
  /* animation: 5s walk forwards; */
}

.paw-2 {
  animation: 1s steps infinite forwards;
}

.paw-3 {
  animation: 1s steps 0.5s infinite forwards;
}

.paw-1 {
  animation: 1s steps 1s infinite forwards;
}

.paw-4 {
  animation: 1s steps 1.5s infinite forwards;
}

@keyframes steps {
  /*Movement*/
  0% 25% {
    transform: translate(0, -100px);
  }
  /*Pause*/
  25% 50% {
    transform: translate(0, -100px);
  }
  /*Movement*/
  50% 75% {
    transform: translate(0, -200px);
  }
  /*Pause*/
  100% {
    transform: translate(0, -200px);
  }
}

/*CSS animation for .animation-container*/

@keyframes walk {
  0% {
    transform: translate(0, 0);
  }
  100% {
    transform: translate(0, -100vh);
  }
}
<!-- Container for CSS animation -->
<div class="animation-container">
  <img class="paw-1" src="https://via.placeholder.com/100x100">
  <img class="paw-2" src="https://via.placeholder.com/100x100">
  <img class="paw-3" src="https://via.placeholder.com/100x100">
  <img class="paw-4" src="https://via.placeholder.com/100x100">
</div>
7rfyedvj

7rfyedvj1#

解决方案

CSS动画不是这样工作的。而不是设置一个周期,从动画的变化,如0% 25% {...},你必须改变它是一个值在一个特定的关键帧,如:

@keyframes steps {
    /*Pause start*/
0% {
    transform: translate(0, -100px);
}
/*Pause end*/
25% {
    transform: translate(0, -100px);
}
/*Movement start*/
50% {
    transform: translate(0, -200px);
}
/*Movement end*/
100% {
    transform: translate(0, -200px);
}
}
/*you can edit the percentages ofc*/

强烈建议使用IntelliJ IDEAVs Code这样的IDE来修复这样的错误以及更多错误。

额外提示

设置animation-fill-mode: forwards也是无用的,因为它永远不会结束(除非你打算在JavaScript或其他地方编辑)。
我也不建议使用transform: translate();来制作动画,而使用margin-top,因为translate可能很难调试。

相关问题