有没有一种很好的方法来检测SVG动画是否可用,然后适当调整DOM?
我正在使用animateMotion来动画g
包含image
的动作。这只适用于Mozilla;更糟糕的是,animateMotion
未启动会使图像在Mozilla和WebKit中保持不同的位置(但每个中的位置不同!)。
我似乎需要一种方法来调整g和图像的属性来处理每个场景,并且只有在animateMotion
标记可行时才添加{{1}}标记。有什么建议吗?
答案 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)的支持。
如果没有完整的例子,就不可能确定是什么导致了这些差异。