当前位置: 首页 > 面试题库 >

停止CSS动画,但让其当前迭代结束

丰智
2023-03-14
问题内容

我有以下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但是这样做也一样。


问题答案:

收到animationiteration事件后停止动画。像这样(使用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(jQuery)

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

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



 类似资料:
  • 问题内容: 我有以下代码: 执行javascript函数后,动画会停止,但会突然停止。 我可以平稳地停止动画,以避免突然跳入,然后从停止的位置再次继续动画吗? 问题答案: 您不会喜欢这个答案,但现实是CSS3动画对于实现此目的并不是真正有用。为了完成这项工作,您需要在Javascript中复制很多CSS,这会破坏点(例如,在此密切相关的答案中,例如,[更改动画CSS3的速度?)。要真正使它平稳停止

  • 主要内容:实例,jQuery stop() 方法,实例jQuery stop() 方法用于在动画或效果完成前对它们进行停止。 停止滑动 时间是宝贵的,因此,我们为您提供快捷易懂的学习内容。 在这里,您可以通过一种易懂的便利的模式获得您需要的任何知识。 实例 jQuery stop() 滑动 演示 jQuery stop() 方法。 jQuery stop() 动画(带参数) 演示 jQuery stop() 方法 jQuery stop() 方法 j

  • 有没有你可以开始和停止一个动画,所以播放1秒,停止1秒?我尝试过用单选按钮与Thread.Sleep切换来实现这一点,但是我认为这种方式是不可能的。有没有其他方法可以做到这一点?多谢了。

  • 问题内容: 我现在正在制作CSS动画,在其中我正在移动内容并希望它停留在最终位置,直到用户将鼠标移开为止。 无论何时动画结束,它都会重复播放。我只希望它发生一次并保持原样,直到用户离开。我尝试使用规范中已暂停的内容,但此功能无法正常运行。任何帮助表示赞赏。谢谢。:) 问题答案: 以下评论对我有用。谢谢迈克尔 “您需要添加填充模式以在动画结束时冻结动画状态。 使动画处于最后一帧的状态 在开始时保留动

  • 我有一个CollectionView,我想在用户选择的CollectionViewCell内创建一个动画。我选择使用animateKeyframesWithDuration,因为我想一步一步地创建自定义动画。我的代码如下所示: 选中此选项后,将在自定义CollectionViewCell内执行。问题是我想强制在某个特定点立即停止动画。但当我这样做时,动画并没有完全停止,它只是将剩余的动画移动到另一

  • 问题内容: 我正在制作一个程序,试图对在屏幕上移动的卡片进行动画处理,就好像您实际上是从桌子上拔出它一样。这是动画的代码: 此矩形对象位于jframe内的面板内。为了重新粉刷面板,我有这个: 这是一个线程,每隔50毫秒重新绘制一次gamePanel。 现在,我意识到这可能不是执行此类操作的最佳方法。如果有更好的方法来完成整个重新粉刷工作,请通知我! 但是,我遇到的问题是,当我为矩形调用命令时,它会