css如何重置触发动画,javascript – 重置类时CSS动画不会重新启动

我正在使用CSS着色器动画.我的着色器类定义如下:

.shader{

-webkit-filter :custom(url(v.vs) mix(url(f.fs) multiply destination-over), 200 200);

-webkit-animation-name: test;

-webkit-animation-duration: 2s;

-webkit-animation-iteration-count: 1

}

我试图通过$(‘#holder’)使用jquery动态设置/取消设置样式(着色器动画).addClass(‘shader’);和$(‘#holder’).removeClass(‘shader’);

然而,奇怪的是当我重置类时(例如,在removeClass之后调用addClass),只有着色器被重新应用但动画没有(我已经挂钩了AnimationStart事件以查看我的动画何时开始).任何人都知道为什么会这样,我怎么解决它?

编辑:

我添加了JSfiddle代码片段here的简化版本.本质上我将动画重新应用于div两次但实际动画仅在第一次调用时才会被调用.

解决方法:

问题是,即使您删除然后重新应用动画类,也可以在单个阻塞函数的过程中执行此操作.当您的函数退出时,渲染引擎似乎没有任何更改.

一种解决方案(您选择的解决方案)是克隆元素并销毁原始元素.这很好,但如果你有任何事件绑定到原始元素(我认为)他们也将被销毁.

另一种方法是从元素中删除动画类,然后用非常小的延迟包装在setTimeout()调用中重新应用类的代码,例如:

$('#holder').removeClass('shader');

setTimeout(

function(){$('#holder').addClass('shader')}

, 1);

标签:javascript,jquery,css,css3,webkit

来源: https://codeday.me/bug/20190925/1815940.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值