在IE/FF中不同时传输的CSS3动画



我正在开发一个演示库,以使我的生活更加轻松。自然,动画是其中不可或缺的一部分。

该库使用Transit为动画提供动力,以加速CSS3效果。一个特定的动画有一个元素滑入或滑出演示文稿。如果你把其中两个粘在一起(一个进去,一个出去),它会为幻灯片到幻灯片的过渡创造一个非常好的效果。在此处查看演示(使用箭头键/单击以在演示中前进/后退)

(这都是在Windows中)Chrome显示效果很好,在转换过程中你看不到两张"幻灯片"之间的间隙,因为它们实际上是同时播放的。然而,Chrome在转换过程中会扭曲文本,对此我无能为力,所以在实际演示时,我想使用Firefox甚至IE之类的东西,因为它们总是很好地反别名文本。然而,在FF和IE中,两张幻灯片之间都出现了间隙,就好像它们开始时相距很小一样。

的确,它们是分开开始的,当我在每个动画开始时记录Date.now()时,Chrome和Firefox中大约有4ms的差异(尽管其中一些开销可以归因于Date对象的创建,而且还有很多优化工作要做)。Chrome有更大的时差,但Firefox是动画中有差距的一个。

有什么办法解决这个问题吗?这是我的实现(在Github上)的问题,还是与Transit(在Github上)有关?如果没有明显的解决方案,我可以尝试使用Tram.js,但一开始我想避免这种情况,因为它比Transit更笨重。

对此有任何见解都将不胜感激。很抱歉,这个页面上没有任何代码,但可能有很多问题,所以我只需要查看整个库。

进行调试时,我看到ease函数被设置为

easeInOutCubic: "cubic-bezier(.645,.045,.355,1)"

我想说,问题就是从这里产生的,如果你想让这两个动画完美同步,你应该选择一个线性缓和函数。

最新更新