首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS动画如何从动画转换到静止状态

CSS动画如何从动画转换到静止状态
EN

Stack Overflow用户
提问于 2019-09-05 03:09:50
回答 1查看 67关注 0票数 0

下面是我的代码:

https://jsbin.com/hibiviwuki/1/edit?html,css,js,output

代码语言:javascript
复制
card
  background red
  border 1px solid black
  width 40px
  height 40px
  margin 20px
  display block
  transition 2s
  filter drop-shadow(2px 2px 1px rgba(0, 0, 0, .4)) drop-shadow(0 -1px 2px green)
  transform scale(1) rotate(0)

  &.active
    animation randanims 2s
    animation-iteration-count infinite
    animation-direction alternate


@keyframes randanims
  0%
    transform scale(2) rotate(180deg)
    filter drop-shadow(1rem 1rem 1px rgba(0, 0, 0, .4)) drop-shadow(0 -5px 12px green)

  50%
    transform translate(20px) scale(.5) rotate(0deg)
    filter drop-shadow(1rem 1rem 1px rgba(0, 0, 0, .4)) drop-shadow(0 -5px 12px green)

  100%
    transform scale(2) rotate(-180deg)
    filter drop-shadow(1rem 1rem 1px rgba(0, 0, 0, .4)) drop-shadow(0 -5px 12px green)

我试着让它在2秒内平稳地转换到静止的位置。现在,它从动画状态跳到没有动画的状态。

如果不控制JS中的动画,这是可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-05 03:29:15

如果我没理解错的话:

代码语言:javascript
复制
$( document ).ready(function() {
    $('card').click(function () {
      // Add animation class
      $(this).toggleClass('active');
      
      // Listen to animation end event
      $(this).one("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){
        
        // Remove the class
        $(this).toggleClass('active');
      });
    });
});
代码语言:javascript
复制
/* https://jsbin.com/yujacagero/1/edit?html,css,js,output */

card {
  background: #f00;
  border: 1px solid #000;
  width: 40px;
  height: 40px;
  margin: 20px;
  display: block;
  transition: all 2s ease;
  filter: drop-shadow(2px 2px 1px rgba(0,0,0,0.4)) drop-shadow(0 -1px 2px #008000);
  transform: scale(1) rotate(0);
}
card.active {
  animation: randanims 2s;
  animation-iteration-count: 1;
  animation-direction: alternate;
}
@-moz-keyframes randanims {
  0% {
    transform: scale(1) rotate(180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  25% {
    transform: scale(2) rotate(180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  50% {
    transform: translate(20px) scale(0.5) rotate(0deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  75% {
    transform: scale(2) rotate(-180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  100% {
    transform: scale(1) rotate(0deg);
    filter: drop-shadow(2px 2px 1px rgba(0,0,0,0.4)) drop-shadow(0 -1px 2px #008000);
  }
}
@-webkit-keyframes randanims {
  0% {
    transform: scale(1) rotate(180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  25% {
    transform: scale(2) rotate(180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  50% {
    transform: translate(20px) scale(0.5) rotate(0deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  75% {
    transform: scale(2) rotate(-180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  100% {
    transform: scale(1) rotate(0deg);
    filter: drop-shadow(2px 2px 1px rgba(0,0,0,0.4)) drop-shadow(0 -1px 2px #008000);
  }
}
@-o-keyframes randanims {
  0% {
    transform: scale(1) rotate(180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  25% {
    transform: scale(2) rotate(180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  50% {
    transform: translate(20px) scale(0.5) rotate(0deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  75% {
    transform: scale(2) rotate(-180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  100% {
    transform: scale(1) rotate(0deg);
    filter: drop-shadow(2px 2px 1px rgba(0,0,0,0.4)) drop-shadow(0 -1px 2px #008000);
  }
}
@keyframes randanims {
  0% {
    transform: scale(1) rotate(180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  25% {
    transform: scale(2) rotate(180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  50% {
    transform: translate(20px) scale(0.5) rotate(0deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  75% {
    transform: scale(2) rotate(-180deg);
    filter: drop-shadow(1rem 1rem 1px rgba(0,0,0,0.4)) drop-shadow(0 -5px 12px #008000);
  }
  100% {
    transform: scale(1) rotate(0deg);
    filter: drop-shadow(2px 2px 1px rgba(0,0,0,0.4)) drop-shadow(0 -1px 2px #008000);
  }
}
代码语言:javascript
复制
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
</head>

<body>
  <card></card>
  <card class="active"></card>
</body>

</html>

带手写笔的Updated JSBin

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57794520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档