对于任何遇到问题的人,我有一个解决方法。
我有一个带有ID和CSS动画的完整SVG,在所有其他主要浏览器中都能完美工作。
我将我的SVG插入到HTML中,这样我就可以使用CSS动画访问每个项目。
为了使其正常工作,您必须将SVG的位置设置为:
absolute; top: 0px; left: 0px,
...在一个容器.svgcontent
内(或者你想叫它什么都可以)
脚本:
var IE = (navigator.userAgent.indexOf("Edge") > -1 || navigator.userAgent.indexOf("Trident/7.0") > -1) ? true : false;
objs = [ '#file1', '#file2','#file3','#file4','#file5','#file6','#file7','#file8','#file9','#file10','#file11', '#bottom' ];
if ( IE ){
objs.forEach(function (item) {
item = $(item);
id = item.attr('id');
svgcontent = item.closest('.svgcontent')
svg = item.closest('svg');
svgattrs = ' width='+svg.attr('width')+' height='+svg.attr('height')+' '
html = '<svg id="'+id+'" '+svgattrs+'>'+item.html()+'</svg>';
item.remove();
$(svgcontent).prepend(html);
});
}
这将把objs
数组中的所有元素作为完整的SVG插入到第一个元素后面(您可以将prepend
更改为append
以更改此行为)。
而且,SVG将具有与对象相同的ID,因此CSS动画将应用于完整的SVG,而不是SVG对象。
就是这样!
animation
CSS属性。你可以在这里看到:http://jsfiddle.net/z8w4vuau/50/ ,我如何为.loader-path
circle
元素添加了stroke
属性,并增加了stroke-dasharray
,以便您可以看到它正在旋转,但IE不会对您的stroke-dasharray
和stroke-dashoffset
进行动画处理。因此,请改用长格式的CSS动画属性。 - Jonathan Marzullo