【问题标题】:How to start animation at a certain point (75 %)?如何在某个点(75%)开始动画?
【发布时间】:2021-12-22 04:23:02
【问题描述】:

我接听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 的动画功能?

【问题讨论】:

    标签: javascript css animation css-animations font-awesome


    【解决方案1】:

    你需要覆盖 .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>


    我希望这是你想要的。

    【讨论】:

    • 谢谢!但不幸的是,这并不是我想要的。在您的 sn-p 中,将显示绿色解锁图标动画的第二季度而不是第四季度。结果,解锁图标显示错误。
    • 我已经更新了答案。立即尝试。
    • @ThreeYearOld 您现在要问第二个问题...请关闭此问题(通过选择最佳答案 - 复选标记)并提出一个新问题。每次关闭(复选标记)问题时,您都会收到声誉积分,因此这对您有好处。回答者会为 每个 答案获得分数,这对他们有好处。 StackOverflow 的设计是奖励每个问题/答案对。 (另外,目前只有 Onkar Ruikar 会看到您的附加问题 - 当您提出新问题时,数十人会立即看到并能够回复 - 这对您来说非常好。)我>
    • @ThreeYearOld 动画定时功能。如果是linear,那么我们将使用 1000 毫秒的延迟。 cubic-bezier.com
    • desmos.com/calculator/ervs7hlikl 这是近似的缓入缓出曲线。时间是 X 轴,进度是 Y 轴。由于我们对 75% 的颜色更改进度感兴趣,因此时间为 2.6 秒。由于我们的动画从 2 秒开始,延迟为 600 毫秒。这仍然是近似值,为了获得准确的值,我们需要求解三次贝泽方程以简化.42,0,.58,1。我还没有找到任何在线计算器,所以使用图表。
    猜你喜欢
    • 2013-09-11
    • 2012-06-26
    • 2019-11-21
    • 2015-06-01
    • 2012-11-04
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多