我正在使用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