Dla każdego kłopoty z tym, mam obejścia.
Miałem pełną SVG z identyfikatorami i animacjami CSS, wszystko działa idealnie dla wszystkich innych głównych przeglądarek.
Mam mój SVG włożony do HTML, więc mogę uzyskać dostęp do każdego elementu z animacjami CSS.
Aby to działało, trzeba mieć swój SVG z pozycji:
absolute; top: 0px; left: 0px,
... wewnątrz kontenera .svgcontent
(lub cokolwiek chcesz to nazwać)
Scenariusz:
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);
});
}
to ma wszystkie elementy w tablicy objs
oraz wstawić je w pełnym SVG za t on pierwszy (można zmienić prepend
na append
, aby zmienić to zachowanie).
I SVG będzie miał ten sam identyfikator co obiekt, więc animacja CSS będzie dotyczyć pełnego SVG, a nie obiektu SVG.
I to wszystko!
Która wersja IE? –
Testuję je na eksploratorze 11 – canute
Będziesz musiał zdefiniować atrybut obrysu dla koloru, który zobaczysz w IE. Ale myślę, że będziesz musiał użyć indywidualnych właściwości animacji CSS zamiast skróconej własności 'animacji' CSS. Możesz zobaczyć tutaj: http://jsfiddle.net/z8w4vuau/50/ .. jak dodałem atrybut 'stroke' dla koloru na elemencie' .loader-path' 'circle' i zwiększyłem' stroke-dasharray' więc widzisz, że się kręci, ale IE nie animuje twojego 'stroke-dasharray' i' stroke-dashoffset'. Więc po prostu użyj właściwości animacji CSS o długim kształcie. –