我的工作:
- 创建一个元素,该元素的样式包含CSS3转换
- 向其中添加一个类(该类的样式包含背景色属性)
- 向其中添加一个innerHTML
- 删除类
当我像一样删除类时
element.classList.remove('classname')
没有转换,但当我设置0秒延迟的超时时,它就起作用了:
setTimeout(function() { element.classList.remove('classname'); }, 0);
为什么?如何避免setTimeout函数,或者使用它是否正常?
示例:http://jsfiddle.net/JHevJ/1/
因为您要在屏幕计算元素的重绘之前删除该类。你首先要在它显示为该类之前将其删除,所以它认为没有必要制作动画。
超时使它"等待"0毫秒,然后删除类,这使它可以首先显示带有类的元素,"等待"0time,然后删除类。