js里写入css,js样式的写入与清除,cssText的疑问

这是CSS3动画本身的问题。还有reflow与否的问题。

简单来说,当有使浏览器reflow的操作的时候,动画会被重置,这时就能重复运行,但单单是repaint不行。而修改一个类的动画效果应该是能引起浏览器的reflow的,但是由于chrome等浏览器的优化,在同一个函数块里对同一个元素的cssText进行修改,它会把所有累加再在最后进行修改。而IE则是每一次修改都会。

所以当你在chrome里设断点单步运行时,o_bar.style.cssText="";这句不会起作用。所以你加了延时后又起作用了。

W3C's opition里有句这样的描述。

In order to restart an animation, it must be removed then reapplied.

就是对于这个描述,除了加延时之外还可以用修改元素的宽度、用两个不同名但同样的动画相互替换等方法来达到目的,简单来说就是要引起浏览器的reflow。

还有几点很有意思,对于css动画,它运行结束并不会自动的赋予pause状态,仍旧是running状态。

更多的你可以google一下,关键字是 restart css animation。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值