如何检测SVG动画是否可用

时间:2011-04-10 04:21:23

标签: animation webkit svg mozilla smil

有没有一种很好的方法来检测SVG动画是否可用,然后适当调整DOM?

我正在使用animateMotion来动画g包含image的动作。这只适用于Mozilla;更糟糕的是,animateMotion未启动会使图像在Mozilla和WebKit中保持不同的位置(但每个中的位置不同!)。

我似乎需要一种方法来调整g和图像的属性来处理每个场景,并且只有在animateMotion标记可行时才添加{{1}}标记。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

Modernizr仅检测高级功能,并信任浏览器不要撒谎。例如,桌面Safari对Modernizr的SMIL有一个很大的“肯定”。但是SMIL只是部分地在每个浏览器中实现(甚至是Firefox 4!),你必须测试每个单独的属性动画,以确切地确定哪个是有效的。

例如,您无法使用SMIL为Desktop Safari中的路径动画上的文本设置startOffset动画。没有库可以检测到这样的事物存在特征。

恕我直言,如果它们存在,你应该使用CSS转换/动画在IE以外的所有内容上进行通用动画。对于IE,请使用Javascript(或Canvas)动画。

(BTW,Chrome上的animateTransform已损坏 - 它错误地计算了翻译)

答案 1 :(得分:2)

我刚刚遇到运行Android 4.2.2的三星手机的这个问题。它会报告所有这三个都是真的:Modernizr.svg, Modernizr.svgclippaths, Modernizr.smil但是没有动画和剪辑路径搞砸了。看起来只有一个元素可以有一个剪辑路径。无论如何,我们以这个不那么伟大的决议结束了:

isAndroid = /Android/.test( navigator.userAgent );

抱歉,Android用户,您只会看到备用图片。这是一个可怕的修复,但它只是一个简单的标志动画所以......

答案 2 :(得分:0)

Modernizr检测到对SVG动画(SMIL)的支持。

如果没有完整的例子,就不可能确定是什么导致了这些差异。

相关问题