javascript - 动画仅适用于第一次单击按钮

我想制作简单的文字动画。当我单击一个按钮时,文本从完全透明变为完全可见,然后恢复为透明。我编写了执行动画的代码,但只编写了一次。每次单击按钮时动画不再工作:

function animation() {
  $("span").removeClass("opacity-effect");
  $("span").addClass("opacity-effect");
}
span{
  opacity: 0;
}

.opacity-effect {
  animation-name: animate-opacity-effect;
  animation-duration: 1400ms;
  animation-fill-mode: forwards;
  opacity: 0;

}

@keyframes animate-opacity-effect {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span>Hello World!</span>
<button onClick="animation()">
   Start animation
</button>

最佳答案

动画不会重复,因为要启动动画,CSS 需要在没有类时有帧。

因此,要解决这个问题,您应该延迟将类添加到下一帧

function animation() {
  $("span").removeClass("opacity-effect");
  requestAnimationFrame(()=>{
    $("span").addClass("opacity-effect");
  });
}

https://stackoverflow.com/questions/66687063/

相关文章:

c - 将 foo(int *) 作为参数传递给 X 中的 foo(void*)

kotlin - 在 Kotlin 中定义数组类型

python - 在 pandas 的 to_markdown() 中抑制科学记数法

Flutter - 'showSnackBar' 已弃用 - 如何更新?

python - 从具有相同键的多个字典中获取值

git - 有没有没有版本提交的 'bump the version' 的方法?

c++ - C++中通过函数删除一个对象

javascript - ("[object Promise]") 无法序列化为 JSON

python - 将数据规范化为 [-1 and 1] ,但需要保留 0 值

python - 类型错误 : input expected at most 1 argument,