我们现在想通过按钮的click事件反复触发一个元素的css3动画,点击一次,动画效果就跑一次。现在碰到这样一个问题,我通过click事件给目标元素添加一个带有css3动画的class,动画效果第一次有,后续就不再触发css3动画了。click事件中先删除class再添加还是不行,怎么办?(后面附有测试代码线上链接)测试代码线上链接如下:线上测试代码
1 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
刚过来就看到看到正确答案真是悲伤的故事。
那我就来稍微解释一下为何setTimeout 0
在这里能够起到效果吧。
如果没有setTimeout 0
,浏览器的执行流程是这样的:
先removeClass
,然后addClass
,然后让浏览器重新渲染完整个元素属性。这样就不会有transition
动画效果了。
其实setTimeout 0
的作用相当于把内部代码放到当前上下文的最后去执行,在这个问题中的作用就相当于是
先removeClass
,然后让浏览器重新渲染完整个元素属性,然后addClass
。
如果解释的不对还请dalao谅解并指出问题。
添加回答
举报
0/150
提交
取消