javascript - 如何在使用 Web Animations API 完成之前暂停动画?
问题描述
我正在用 javascript 编写一个库,它使用Web Animations API执行一些动画。似乎默认情况下,一旦动画完成,所有内容都会在视觉上重置为动画开始之前的状态。
onfinish
什么是在动画完成状态下或在回调执行之前“暂停”动画的可靠方法?
这是一个例子:
var elem = document.querySelector('.pulse');
var animation = elem.animate(
{
opacity: [1, 0.5],
transform: ['scale(1)', 'scale(0.5)']
},
{
duration: 500
}
);
animation.play();
// This works... but.. 10ms less than the duration?
// This cannot be very reliable...
setTimeout(function() {
animation.pause();
}, 490);
<script src="https://rawgit.com/web-animations/web-animations-js/master/web-animations.min.js"></script>
<div class="pulse" style="width: 150px;">
Hello world!
</div>
我想在不使用setTimeout
. 执行回调时onfinish
,动画已经结束,看起来就像动画刚开始时一样。
解决方案
虽然@andu-andrici 的回答让我朝着正确的方向前进,但我正在寻求 Web Animations API 中的解决方案。
解决方案是在调用的第二个参数中添加fill: 'forwards'
到对象.animate()
。像这样:
var elem = document.querySelector('.pulse');
var animation = elem.animate(
{
opacity: [1, 0.5],
transform: ['scale(1)', 'scale(0.5)']
},
{
duration: 500,
fill: 'forwards'
}
);
animation.play();
<script src="https://rawgit.com/web-animations/web-animations-js/master/web-animations.min.js"></script>
<div class="pulse" style="width: 150px;">
Hello world!
</div>
推荐阅读
- python - 如果一个列字符串包含在另一个与 Python 中,则一对多合并两个数据帧
- python - 如何使用 subprocess 和 asyncio 实时输出不断循环程序的标准输出?
- wordpress - Wordpress Rest API:通过搜索获取类别列表
- vim - 在 Vim vs Cat 中显示未对齐的文本
- drools - 在流口水中使用 EXISTS 关键字在条件满足时从 WHEN 部分获取值
- terminal - 您可以使用 cd 转到当前文件夹中未包含的文件夹吗?
- javascript - 如何在 JavaScript 中总结对象和数组
- javascript - 如何更改 Apache eChart 图例中颜色“拭子”的样式?
- mysql - SQL - 检查一组相似记录中的任何记录是否与 ID 匹配
- python - 如何复制和保存mhtml内容?