I'm starting to use SVG and so far it's all okay, but when I try to do some animation with CSS the result isn't what I expect it to be.
I want to rotate a gear like in this Fiddle.
Below is the CSS I used to rotate the elements:
.gear {
-webkit-animation: rotation 2s infinite linear;
-moz-animation: rotation 2s infinite linear;
-o-animation: rotation 2s infinite linear;
animation: rotation 2s infinite linear;
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(359deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(359deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(359deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(359deg);}
}
Actually it is animated in Chromium at least. Just the center is not correct. (Try to remove the width, height and x/y attributes, while just using the viewBox for the SVG tag.)
In Opera I could get it working, when setting the class "gear" to the SVG element instead of the path:
You may also have to set the
transform-origin
.Set
transform-origin
to50% 50%
in order to make thesvg
animation function like theimg
one:UPDATED EXAMPLE HERE
It's worth noting that the default/initial value of the
transform-origin
property is50% 50% 0
.