对于类似Time Machine的效果,CSS3动画、SVG和Canvas中哪一个效果最好



对于我们的网站,我们正在开发一个"组件",该组件将以类似于Mac OS X上的Time Machine的方式显示图像。因此,它将是多个图像叠加在一起,位置略有不同,并且在向前和向后滚动时具有平滑的动画。

我们有一个CSS3动画的尖峰实现,但在Firefox中不是很顺利,IE9根本不受支持(尽管如果其他选项更糟糕,我们可能会接受它)。

我们正在考虑在SVG或Canvas中实现,但没有太多经验,所以我想我们应该先问一下。因此:

要求:

  1. 它必须很快。动画必须是平滑的,这是一个硬性要求
  2. 它应该在尽可能多的浏览器中得到支持。
    • 所需浏览器为Chrome 20+、Firefox 14+和IE10+
    • 我们非常希望IE9也能得到支持,但如果绝对必要的话,我们可以不支持它
    • 歌剧很好,但不是必须的

选项以及我们目前对它们的经验/看法:

  • CSS3-似乎是该任务的"合适"技术,但不幸的是,实现效果不佳。也许我们的原型代码效率低下,但目前不同浏览器之间的支持似乎截然不同
  • SVG-至少它是矢量图形/DOM元素,但我们对此没有任何经验
  • Canvas-我们希望它即使在游戏中也能发挥良好的性能,但我们无法想象所有的像素重绘是如何工作的。也许我们应该使用一些库,比如processingjs
  • Flash或其他插件-我碰巧非常了解Flash,我知道类似时间机器的效果在那里会很容易,但我们现在宁愿远离插件

谢谢你的建议。

如果组件的大小不一定很大,但可以限制在800x600像素左右,那么Canvas应该可以胜任这项工作。

根据我的经验,如果你只在画布上绘制(缩放)位图,那么即使在iPad2上,性能也非常好。只有在更高的分辨率(1920x1080及以上)下,性能才会真正受到影响,所以如果你将其用于全屏功能,你需要小心!此外,阴影等花哨的功能也会大大降低性能。

Canvas在浏览器之间几乎没有什么怪癖,所以在让它在各种浏览器中按预期工作方面,它几乎肯定不会比使用CSS3或SVG痛苦。

我建议用Canvas制作一个快速而肮脏的原型,看看它是否能满足您对性能的第一个要求。

如果你决定使用Canvas,我绝对建议你使用库。既然你很了解Flash,你可能想看看EaselJS。它有一个受Flash启发的显示列表,在大多数情况下使用它的性能成本可以忽略不计。您还可以获得用于交互的基本事件。此外,如果你使用EaselJS,如果你决定稍后将代码移植到Flash,那将非常简单。

你在找这样的东西吗?它使用SMIL动画,所以你必须集成像fakesmile这样的东西才能获得IE支持。

相关内容

  • 没有找到相关文章

最新更新