CSS3里面提供原生的动画(Animation)和过渡(Transition)支持,使用起来非常简单方便,但是一直有一个问题困扰着我:如何实现像JQuery动画提供stop方法一样的功能?
今天在学习bootstrap代码的时候发现一段有意思的代码。这段代码意图非常简单,就是要显示$element元素,并且给它加上”in”类,使其产生slide in的效果。但让我看不懂的是:that.$element[0].offsetWidth
这句代码,好像没有做什么实质性的事情,后面的注释写的是force reflow(强制重绘)。
在网上查找了相关的资料,看到Stackoverflow上有人做了解答:
That’s where the call to the left offset comes in. This is one of the properties that are said to cause a re-flow in the page. This is obviously usually a bad thing performance wise, but it seems necessary to prevent the css transitions picking up the wrong values.
大概的意思是:读取offsetWidth(或者left offset)导致了浏览器的re-flow
操作,这样做的目的有点类似我们在使用buffer时候的flush操作,虽然会带来性能问题,但是在特定场景下可以防止css3 tranisition取到错误的值。