为什么最后一帧先出现在动画中?

时间:2018-11-28 01:17:57

标签: javascript html css animation

我试图制作“跳入”效果,即在动画之前没有圆圈,然后按滚动执行动画,并且动画结束后圆圈仍然保留在那里。但是由于某种原因,它甚至在动画之前就存在,然后消失(因为第一帧的不透明度为0)然后再次出现。我不确定自己在做什么错。

if (browser.canUse('transition')) {

  var on = function() {

      // Circles

      $('.circle')
        .scrollex({
          mode: 'bottom',
          delay: 50,
          initialize: function() {
            $(this).addClass('bounceIn');
          },
          terminate: function() {
            $(this).removeClass('bounceIn');
          },
          enter: function() {
            $(this).removeClass('bounceIn');
          },
          leave: function() {
            $(this).addClass('bounceIn');
          }
        });
.circle {
  position: absolute;
  border-radius: 50%;
}

.circle.circle1 {
  top: 80px;
  left: 120px;
  width: 100px;
  height: 100px;
  background: white;
  opacity: 0;
}


/* ----------- BOUNCE IN ------------*/

@-webkit-keyframes bounceIn {
  from,
  20%,
  40%,
  60%,
  80%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.315, 0.71, 0.455, 1);
    animation-timing-function: cubic-bezier(0.315, 0.71, 0.455, 1);
  }
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3);
    transform: scale(0.3);
  }
  20% {
    -webkit-transform: scale(1.03);
    transform: scale(1.03);
  }
  40% {
    -webkit-transform: scale(0.9);
    transform: scale(0.9);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale(1.03);
    transform: scale(1.03);
  }
  80% {
    -webkit-transform: scale(0.97);
    transform: scale(0.97);
  }
  to {
    opacity: 1;
    -webkit-transform: scale(1);
    transform: scale(1);
  }
}

@keyframes bounceIn {
  from,
  20%,
  40%,
  60%,
  80%,
  to {
    -webkit-animation-timing-function: cubic-bezier(0.315, 0.71, 0.455, 1);
    animation-timing-function: cubic-bezier(0.315, 0.71, 0.455, 1);
  }
  0% {
    opacity: 0;
    -webkit-transform: scale(0.3);
    transform: scale(0.3);
  }
  20% {
    -webkit-transform: scale(1.03);
    transform: scale(1.03);
  }
  40% {
    -webkit-transform: scale(0.9);
    transform: scale(0.9);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale(1.03);
    transform: scale(1.03);
  }
  80% {
    -webkit-transform: scale(0.97);
    transform: scale(0.97);
  }
  to {
    opacity: 1;
    -webkit-transform: scale(1);
    transform: scale(1);
  }
}

.bounceIn {
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-name: bounceIn;
  animation-name: bounceIn;
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
}
<div class="circle circle1"></div>

0 个答案:

没有答案