停止一个CSS动画,但让它的当前迭代完成

前端之家收集整理的这篇文章主要介绍了停止一个CSS动画,但让它的当前迭代完成前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下HTML:
<div class="rotate"></div>​

和以下CSS:

@-webkit-keyframes rotate {
  to { 
    -webkit-transform: rotate(360deg);
  }
}
.rotate {
    width: 100px;
    height: 100px;
    background: red;
    -webkit-animation-name:             rotate;
    -webkit-animation-duration:         5s;
    -webkit-animation-iteration-count:  infinite;
    -webkit-animation-timing-function:  linear;
}​

我想知道是否有一种方法(使用JavaScript)来停止动画,但是让它完成当前的迭代(最好通过改变一个或几个CSS属性)。我已经尝试设置-webkit-animation-name有一个空白值,但是导致元素以惊人的方式跳回到其原始位置。我也尝试将-webkit-animation-iteration-count设置为1,但是这样做也是一样。

解决方法

收到动画片后,停止动画。这样的东西(使用jQuery):

CSS

@-webkit-keyframes rotate {
  to {
    -webkit-transform: rotate(360deg);
  }
}
.rotate {
    width: 100px;
    height: 100px;
    background: red;
}
.rotate.anim {
    -webkit-animation-name:             rotate;
    -webkit-animation-duration:         5s;
    -webkit-animation-iteration-count:  infinite;
    -webkit-animation-timing-function:  linear;
}

HTML

<div class="rotate anim">TEST</div>
<input id="stop" type="submit" value="stop it" />

JS

$("#stop").click(function() {
    $(".rotate").one('animationiteration webkitAnimationIteration',function() {
        $(this).removeClass("anim");
    });
});

小提琴:http://jsfiddle.net/sSYYE/1/

请注意,我使用.one这里(而不是.on),以便处理程序只运行一次。这样,动画可以稍后重新启动。

猜你在找的CSS相关文章