Chrome的DevTools调试动画偶尔失效的问题排查

大家好我刚才在准备demo的时候发现

chrome的这个Animations

有时候用它来调慢动画不好使

比如说我现在这个切换它就有

一个动画效果吗

然后他这块会抖一下

我就想放慢他就不好使

比如说我们现在试一下啊

10%

大家看

跟没有动画了一样

然后就很好奇这是为什么

后来我发现啊原因是这样的

我们先说 Animations

它只是针对 css 的动画进行放慢

那也就是说

只要我们页面上

写了这个 transition 的过渡

(比如说现在这个是...

...所有的属性都用0.3秒来过渡)

只要写了这种transition过度

他才会有动画效果

然后呢他才能谈得上放慢速度

那问题的关键就在于

这个样式

什么时候会被应用到这个元素上

只要这个元素上有这个样式

那他就有动画效果

他就可以放慢

说到这呢就好理解了

因为我们知道

transition的这个组件会替我们在

切换里面元素的那个短时间里面

去管理里面的class样式

就说他会替我们

切换的时候呢把这个样式加上哎

等切换完了他再把样式去掉

所以我们再回到这个上面

当他去掉这个样式的时候说明

整个这个页面现在

没有动画效果了

所以就谈不上放慢了

所以呢解决这个问题有两个方法

(那这两个方法肯定都是调试的时候用哈)

第一个就是这样比较粗暴

我们在这加一个 style

然后呢

我们让他永远都有这个过渡效果

好我们来试一下

然后呢放慢

大家看,慢了、暂停

他就暂停了

继续

大家看

那第二个方法呢就是

我们把这个再去掉

第二个方法呢

就是我们要想办法不要让组件把这个

样式

删掉我们可以在这加一个

v-on:enter

然后呢然后调一个方法

我下边写好了就是这个enter方法

然后enter方法里什么都不写

大家看这有个done方法(回调)

只要我们调用done方法

那他就会把那个样式删掉

我们不调呢他就不删

我们再试一下哈

百分之百

放慢

大家看!暂停可以了

继续

包括他动画执行完了我们来看一下

他这个样式还在

test-enter-active 然后 test-enter-to

还可以试一下把它加成

done() 但是呢我们放到 setTimeout 里边

嗯比如我们用3秒吧

好我们再来调一下

我们切换到这

大家看现在还有这个样式

哎没了

说明过三秒他就被移除了

下一期我们继续来说这个抖动的问题

最后更新于