javascript - 如何在某个点(75%)开始动画?

标签 javascript css animation css-animations font-awesome

我接听this question 。到目前为止我所拥有的:

$('.lock').click(function () {
  $('.fa-lock', this).addClass('fa-flip');
  $('.fa-unlock', this).addClass('fa-flip');
  setTimeout(function () {
    $('.fa-lock').css('color', 'rgba(0, 0, 0, 0)');
    $('.fa-unlock').css('color', 'green');
  }, 1250);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/js/all.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css" rel="stylesheet"/>
<div class="fa-5x fa-stack lock">
  <i class="fas fa-unlock fa-stack-1x" style="--fa-animation-duration: 5s; --fa-animation-iteration-count: 1; color: rgba(0, 0, 0, 0)"></i>
  <i class="fas fa-lock fa-stack-1x" style="--fa-animation-duration: 5s; --fa-animation-iteration-count: 1; color: red"></i>
</div>

但只有绿色解锁图标动画的最后四分之一应遵循可见的红色锁定图标动画。如何在 75% 处开始动画?

或者你会采取不同的方式吗?也许没有 Font Awesome 的动画功能?

最佳答案

您需要覆盖 .fa-flip 动画:

$('.lock').click(function() {
  $('.fa-lock', this).addClass('fa-flip');
  $('.fa-unlock', this).addClass('fa-flip');
  setTimeout(function() {
    $('.fa-lock').css('color', 'rgba(0, 0, 0, 0)');
    $('.fa-unlock').css('color', 'green');
  }, 600);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/js/all.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css" rel="stylesheet" />
<style>
  @keyframes halfflip {
    to {
      transform: rotateY(360deg);
    }
  }
  
  .fa-flip {
    animation-name: halfflip;
    animation-timing-function: ease-in-out;
  }
  
</style>
<div class="fa-5x fa-stack lock">
  <i class="fas fa-unlock fa-stack-1x" style="--fa-animation-duration: 4s; --fa-animation-iteration-count: 1; color: transparent; animation-fill-mode: forwards; --fa-animation-delay:-2s"></i>
  <i class="fas fa-lock fa-stack-1x" style="--fa-animation-duration: 4s; --fa-animation-iteration-count: 1; color: red; animation-fill-mode: forwards; --fa-animation-delay:-2s"></i>
</div>


我希望这就是您想要的。

关于javascript - 如何在某个点(75%)开始动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69898544/

相关文章:

javascript - 基于几个多选框过滤结果,vue

JavaScript 变量 : var a =(3, 4,7);

java - 是否有任何 Java CSS 格式化程序实用程序?

java - 在 RainBow 的每个弧线之间添加 1 秒的延迟

jquery - 如何添加动画来像微调器一样更改倒计时边框的颜色?

javascript - 即使confirm()方法为false,Jquery AJAX也会提交表单

php - 当我尝试使用 php 从数据库回显数据时,我的 html 页面损坏了

html - CSS:关于菜单悬停的隐藏错误

安卓 2.3 : Grow/Shrink animation bug?

javascript - 让表单在无状态 react 组件中提交数据的正确方法是什么?