Transform origin of nested element in complex SVG group - css

I'm having a heck of a time getting my transform origin correct on a nested SVG element and was wondering if I could borrow someones eyes to maybe spot my folly?
I've tried a number of different combinations and so far when I tend to get close to what I want in one browser, it's quite off on another.
For the PoC example we're looking at my little dude's propeller. I set the transform origin for this example at just center for the sake of an easy start (like I said, I tried a number of variations with no luck yet). Could anyone please tell me what's causing the differences between browsers (yes I tried specifying transforms in the various browser qualifiers like -webkit-* as well and hitting the X/Y in various ways) but you'll notice in Chrome it's a lot closer to center of the element, whereas in Firefox it appears the origin the center of the absolute parent SVG itself...
So, anyone want to teach me something new about nested element transform origins in SVG animations and help my little dude fly with his propeller where it needs to be? :)
CODEPEN to tinker with
PS - The vertical Green center line is just a visual size reference placeholder where my little dude flying it is in the real code since I can only add so many characters to an SO snippet...
body {text-align:center}
#keyframes adventure {
10% {
transform: translateX(5%) rotate(2deg);
} 25% {
transform: translateX(13%) rotate(15deg);
} 50% {
transform: translateX(-13%) rotate(-5deg);
} 75% {
transform: translateX(13%) rotate(15deg);
} 90% {
transform: translateX(-5%) rotate(-2deg);
}
}
#keyframes navigate {
10% {
transform: rotate(2deg);
} 25% {
transform: rotate(10deg);
} 50% {
transform: rotate(-5deg);
} 75% {
transform: rotate(10deg);
} 90% {
transform: rotate(-2deg);
}
}
#keyframes propel {
100% {transform: rotate(360deg)}
}
#fullcharacter {
transform-origin: 50%;
animation: adventure 5s infinite;
-webkit-transition-timing-function: step-start;
transition-timing-function: step-start;
}
#steering {
transform-origin: center;
animation: navigate 5s infinite;
}
#propeller {
transform-origin: center;
animation: propel 4s infinite linear;
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="525px" height="250px" viewBox="0 0 525 250" enable-background="new 0 0 525 250" xml:space="preserve">
<rect fill="#81BFE9" width="525" height="250"/>
<g id="fullcharacter">
<g id="steering">
<path fill="#BE1E2D" d="M242.271,125.417c0,0.552-0.479,1-1.069,1h-3.03c-0.589,0-1.068-0.448-1.068-1l0,0
c0-0.552,0.479-1,1.068-1h3.03C241.792,124.417,242.271,124.865,242.271,125.417L242.271,125.417z"/>
<path fill="#BE1E2D" d="M286.358,125.417c0,0.551-0.479,1-1.068,1h-3.029c-0.59,0-1.068-0.449-1.068-1l0,0
c0-0.552,0.479-0.999,1.068-0.999h3.029C285.88,124.417,286.358,124.865,286.358,125.417L286.358,125.417z"/>
<g>
<path fill="#DDAC85" stroke="#BA9168" stroke-width="0.5" stroke-miterlimit="10" d="M239.87,127.589c0,0,3.407-2.738,4.75-2.583
c1.664,0.192,5.234,2.8,5,4.458c-0.225,1.591-5.795,2.781-5.795,2.781L239.87,127.589z"/>
<path fill="#DDAC85" stroke="#BA9168" stroke-width="0.5" stroke-miterlimit="10" d="M284.354,127.589
c0,0-3.407-2.738-4.75-2.583c-1.664,0.192-5.234,2.8-5,4.458c0.225,1.591,5.795,2.781,5.795,2.781L284.354,127.589z"/>
</g>
<path fill="#D6A685" stroke="#BA9168" stroke-width="0.25" stroke-miterlimit="10" d="M290.434,134.938
c0,0,4.426,6.422,4.673,9.203c0.171,1.925-0.751,6.394-2.025,7.245c-1.815,1.214-7.728-3.23-7.728-3.23L290.434,134.938z"/>
<path fill="#424142" stroke="#000000" stroke-width="0.25" stroke-miterlimit="10" d="M287.158,126.417h-0.908v-0.833h-5v0.833
h-0.993c0.003,0.117,0.015,0.229,0.015,0.348v15.422c0,4.61-2.687,8.349-6,8.349h-25c-3.313,0-6-3.738-6-8.349v-15.422
c0-0.118,0.011-0.23,0.015-0.348h-1.119v-0.833h-5v0.833h-1.199c-0.124,0.669-0.197,1.365-0.197,2.087v22.147
c0,4.61,2.687,8.349,6,8.349h39.583c3.313,0,6-3.738,6-8.349v-22.147C287.354,127.782,287.281,127.086,287.158,126.417z"/>
<path fill="#D6A685" stroke="#BA9168" stroke-width="0.25" stroke-miterlimit="10" d="M232.42,134.938
c0,0-4.425,6.422-4.673,9.203c-0.171,1.925,0.751,6.394,2.025,7.245c1.815,1.214,7.727-3.23,7.727-3.23L232.42,134.938z"/>
<g>
<path fill="#EBB789" stroke="#C3996B" stroke-width="0.25" stroke-miterlimit="10" d="M232.876,145.963
c0,0,0.137,0.129-0.119,0.128c-0.902-0.003,0.79,2.842,1.599,3.242c2.943,1.456,11.196,0.29,12.908-2.524
c0.376-0.617,0.248-3.348-0.285-2.873c-1.528,1.364-4.473,0.662-4.473,0.662s2.94,0.374,4.415-0.846
c0.787-0.65,1.082-4.528,0.128-4.141c-2.34,0.95-5.744,0.766-5.744,0.766s3.64-0.21,5.679-0.978
c1.147-0.433,1.245-5.443,0.125-4.928c-2.998,1.379-6.156,1.212-6.156,1.212s3.492,0.042,6.086-1.379
c1.555-0.851,0.382-7.08-1.396-6.944c-7.403,0.563-11.077,0.177-12.742,1.556c-0.732,0.605-2.092,4.076-1.278,4.599
c0.773,0.496,1.112,0.793,1.112,0.793s-0.139,0.041-1.157-0.6c-1.301-0.816-1.986,5.729-0.506,6.143
c0.524,0.146,0.222,0.063,0.222,0.063s0.467,0.146-0.268,0.129c-1.533-0.036,0.135,5.875,1.669,5.911
C232.958,145.96,232.876,145.963,232.876,145.963z"/>
<path fill="#DDA885" d="M234.458,148.958c0,0,3.333,1.917,10.792-0.958c2.289-0.882,2.256-3.986,1.541-3.312
c-0.75,0.708-2.539,0.791-3.416,0.479c-1.875-0.667,2.438,2.127,1.75,2.416C239.068,150.126,234.458,148.958,234.458,148.958z"/>
<path fill="#DDA885" d="M241.688,140.75c0,0,2.303,0.095,3.063,0c0.632-0.079,2.472-0.625,2.472-0.625s-0.08,1.388-0.159,1.844
c-0.063,0.358-0.375,1.406-0.375,1.406s-0.953-1.477-1.438-1.781C244.476,141.105,241.688,140.75,241.688,140.75z"/>
<path fill="#DDA885" d="M241.094,136.094c0,0,2.758-0.124,3.656-0.313c0.639-0.134,2.472-0.844,2.472-0.844
s0.249,1.736,0.185,2.313c-0.049,0.447-0.531,1.719-0.531,1.719s-0.391-1.796-0.844-2.156
C245.054,136.037,241.094,136.094,241.094,136.094z"/>
<path fill="#DDA885" d="M239.068,128.156c0,0,2.998-0.086,3.995-0.156c0.697-0.049,2.781-0.281,2.781-0.281
s0.877,1.128,1.063,1.563c0.238,0.559,0.5,2.375,0.5,2.375s-1.416-2.35-2.188-2.781
C243.868,128.119,239.068,128.156,239.068,128.156z"/>
<path fill="#EBB789" stroke="#C3996B" stroke-width="0.25" stroke-miterlimit="10" d="M291.052,145.963
c0,0-0.138,0.129,0.119,0.128c0.901-0.003-0.79,2.842-1.599,3.242c-2.943,1.456-11.196,0.29-12.908-2.524
c-0.376-0.617-0.248-3.348,0.285-2.873c1.527,1.364,4.473,0.662,4.473,0.662s-2.94,0.374-4.415-0.846
c-0.786-0.65-1.082-4.528-0.128-4.141c2.34,0.95,5.743,0.766,5.743,0.766s-3.64-0.21-5.679-0.978
c-1.148-0.433-1.246-5.443-0.126-4.928c2.997,1.379,6.155,1.212,6.155,1.212s-3.492,0.042-6.086-1.379
c-1.555-0.851-0.381-7.08,1.396-6.944c7.403,0.563,11.077,0.177,12.742,1.556c0.732,0.605,2.092,4.076,1.279,4.599
c-0.773,0.496-1.112,0.793-1.112,0.793s0.14,0.041,1.157-0.6c1.301-0.816,1.986,5.729,0.506,6.143
c-0.523,0.146-0.222,0.063-0.222,0.063s-0.468,0.146,0.269,0.129c1.532-0.036-0.136,5.875-1.67,5.911
C290.971,145.96,291.052,145.963,291.052,145.963z"/>
<path fill="#DDA885" d="M289.469,148.958c0,0-3.332,1.917-10.791-0.958c-2.289-0.882-2.256-3.986-1.541-3.312
c0.75,0.708,2.539,0.791,3.416,0.479c1.875-0.667-2.438,2.127-1.75,2.416C284.859,150.126,289.469,148.958,289.469,148.958z"/>
<path fill="#DDA885" d="M282.24,140.75c0,0-2.303,0.095-3.063,0c-0.633-0.079-2.472-0.625-2.472-0.625s0.079,1.388,0.159,1.844
c0.063,0.358,0.375,1.406,0.375,1.406s0.953-1.477,1.438-1.781C279.452,141.105,282.24,140.75,282.24,140.75z"/>
<path fill="#DDA885" d="M282.834,136.094c0,0-2.758-0.124-3.656-0.313c-0.639-0.134-2.472-0.844-2.472-0.844
s-0.249,1.736-0.185,2.313c0.049,0.447,0.531,1.719,0.531,1.719s0.391-1.796,0.844-2.156
C278.873,136.037,282.834,136.094,282.834,136.094z"/>
<path fill="#DDA885" d="M284.859,128.156c0,0-2.997-0.086-3.994-0.156c-0.697-0.049-2.781-0.281-2.781-0.281
s-0.877,1.128-1.063,1.563c-0.238,0.559-0.5,2.375-0.5,2.375s1.416-2.35,2.188-2.781
C280.06,128.119,284.859,128.156,284.859,128.156z"/>
</g>
</g>
<g id="plane">
<path fill="#CE3232" stroke="#931C24" stroke-miterlimit="10" d="M297.126,174.5c0,0,55.101,6.274,72.374,12.5
c0.949,0.342,3.408,1.002,3.5,2.006c0.192,2.118-4.514,4.733-6.5,5.494c-15.415,5.906-66.001,2-66.001,2L297.126,174.5z"/>
<path fill="#CE3232" stroke="#931C24" stroke-miterlimit="10" d="M225.507,174.5c0,0-55.101,6.274-72.374,12.5
c-0.949,0.342-3.408,1.002-3.5,2.006c-0.192,2.118,4.514,4.733,6.5,5.494c15.415,5.906,66.001,2,66.001,2L225.507,174.5z"/>
<ellipse fill="#CE3232" stroke="#931C24" stroke-width="0.75" stroke-miterlimit="10" cx="260.962" cy="189.006" rx="49.754" ry="42.661"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="246.625" y1="149.8066" x2="276.7061" y2="149.8066">
<stop offset="0" style="stop-color:#5BCBF1"/>
<stop offset="0.0017" style="stop-color:#5BCAF1"/>
<stop offset="0.1744" style="stop-color:#4197D1"/>
<stop offset="0.3181" style="stop-color:#2F78BC"/>
<stop offset="0.4256" style="stop-color:#2467B1"/>
<stop offset="0.4848" style="stop-color:#2061AE"/>
<stop offset="0.6679" style="stop-color:#2C66B1"/>
<stop offset="1" style="stop-color:#3B6EB6"/>
</linearGradient>
<path fill="url(#SVGID_1_)" stroke="#004C6D" stroke-width="0.25" stroke-miterlimit="10" d="M246.625,151.596
c0,0,2.098,2.086,3.006,2.404c5.572,1.955,17.985,1.766,23.619,0c1.004-0.314,3.456-2.404,3.456-2.404s-3.442-6.027-5.433-7.002
c-2.223-1.089-7.133,0.531-9.608,0.531c-2.313,0-7.461-1.542-9.541-0.531C250.123,145.567,246.625,151.596,246.625,151.596z"/>
<path fill="#BF312F" d="M261.375,219.229c-25.047,0-45.655-16.281-48.226-37.173c-0.444,2.261-0.688,4.581-0.688,6.95
c0,22.967,21.714,41.585,48.5,41.585c26.787,0,48.5-18.618,48.5-41.585c0-1.491-0.096-2.963-0.274-4.413
C305.328,204.249,285.398,219.229,261.375,219.229z"/>
<ellipse fill="#969696" stroke="#BCBEC0" stroke-width="7" stroke-miterlimit="10" cx="260.962" cy="189.006" rx="27.5" ry="25"/>
<radialGradient id="propeller_1_" cx="261.3926" cy="188.5" r="50.9983" gradientUnits="userSpaceOnUse">
<stop offset="0.3011" style="stop-color:#BCBEC0"/>
<stop offset="0.4531" style="stop-color:#E6E7E8"/>
<stop offset="0.9899" style="stop-color:#F1F2F2"/>
<stop offset="0.9936" style="stop-color:#F9ED32"/>
</radialGradient>
<path id="propeller" fill="url(#propeller_1_)" stroke="#6D6E71" stroke-width="0.5" stroke-miterlimit="10" d="M291.618,198.024
l-25.939-12.274l2.33-28.48c0,0-0.02-31.189-6.862-31.182c-6.844,0.009-7.013,31.18-7.013,31.18l2.598,28.423l-26.065,12.334
c0,0-27.001,15.611-23.572,21.534c3.429,5.923,30.507-9.517,30.507-9.517l23.541-16.62l23.541,16.62
c0,0,27.079,15.439,30.507,9.517C318.62,213.636,291.618,198.024,291.618,198.024z M261.155,188.442l-0.013,0.022l-0.013-0.022
H261.155z"/>
<radialGradient id="SVGID_2_" cx="261.1426" cy="189.0049" r="11.9452" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#D1D3D4"/>
<stop offset="1" style="stop-color:#A7A9AC"/>
</radialGradient>
<ellipse fill="url(#SVGID_2_)" stroke="#6D6E71" stroke-width="2" stroke-miterlimit="10" cx="261.143" cy="189.005" rx="12.5" ry="11.363"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="155.7402" y1="175.625" x2="177.2904" y2="150.7379">
<stop offset="0.01" style="stop-color:#BCBEC0"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon fill="url(#SVGID_3_)" points="149.627,187.171 180.5,140.842 152,186.134 "/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="59.2358" y1="175.626" x2="80.786" y2="150.7389" gradientTransform="matrix(-1 0 0 1 426.1279 0)">
<stop offset="0.01" style="stop-color:#BCBEC0"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon fill="url(#SVGID_4_)" points="373.006,187.171 342.133,140.842 370.633,186.134 "/>
</g>
<rect x="260.5" y="13.75" fill="#6CBE45" width="0.462" height="217.917"/>
</g>
</svg>

You can't really use percentage values for transform-origin right now because percentage values are treated differently in Chrome and Firefox. That applies also to pseudo values like "center" which is defined to be equivalent to "50%".
You need to use absolute pixel values instead to be cross-browser compatible.
If you change your propellor animation, to use absolute coordinates, it will fix the animation:
#propeller {
transform-origin: 261px 189px;
animation: propel 4s infinite linear;
}
The coordinates I used here were just the cx and cy values of the <ellipse> that forms the propellor hub.
body {text-align:center}
#keyframes adventure {
10% {
transform: translateX(5%) rotate(2deg);
} 25% {
transform: translateX(13%) rotate(15deg);
} 50% {
transform: translateX(-13%) rotate(-5deg);
} 75% {
transform: translateX(13%) rotate(15deg);
} 90% {
transform: translateX(-5%) rotate(-2deg);
}
}
#keyframes navigate {
10% {
transform: rotate(2deg);
} 25% {
transform: rotate(10deg);
} 50% {
transform: rotate(-5deg);
} 75% {
transform: rotate(10deg);
} 90% {
transform: rotate(-2deg);
}
}
#keyframes propel {
100% {transform: rotate(360deg)}
}
#fullcharacter {
transform-origin: 50%;
animation: adventure 5s infinite;
-webkit-transition-timing-function: step-start;
transition-timing-function: step-start;
}
#steering {
transform-origin: center;
animation: navigate 5s infinite;
}
#propeller {
transform-origin: 261px 189px;
animation: propel 4s infinite linear;
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="525px" height="250px" viewBox="0 0 525 250" enable-background="new 0 0 525 250" xml:space="preserve">
<rect fill="#81BFE9" width="525" height="250"/>
<g id="fullcharacter">
<g id="steering">
<path fill="#BE1E2D" d="M242.271,125.417c0,0.552-0.479,1-1.069,1h-3.03c-0.589,0-1.068-0.448-1.068-1l0,0
c0-0.552,0.479-1,1.068-1h3.03C241.792,124.417,242.271,124.865,242.271,125.417L242.271,125.417z"/>
<path fill="#BE1E2D" d="M286.358,125.417c0,0.551-0.479,1-1.068,1h-3.029c-0.59,0-1.068-0.449-1.068-1l0,0
c0-0.552,0.479-0.999,1.068-0.999h3.029C285.88,124.417,286.358,124.865,286.358,125.417L286.358,125.417z"/>
<g>
<path fill="#DDAC85" stroke="#BA9168" stroke-width="0.5" stroke-miterlimit="10" d="M239.87,127.589c0,0,3.407-2.738,4.75-2.583
c1.664,0.192,5.234,2.8,5,4.458c-0.225,1.591-5.795,2.781-5.795,2.781L239.87,127.589z"/>
<path fill="#DDAC85" stroke="#BA9168" stroke-width="0.5" stroke-miterlimit="10" d="M284.354,127.589
c0,0-3.407-2.738-4.75-2.583c-1.664,0.192-5.234,2.8-5,4.458c0.225,1.591,5.795,2.781,5.795,2.781L284.354,127.589z"/>
</g>
<path fill="#D6A685" stroke="#BA9168" stroke-width="0.25" stroke-miterlimit="10" d="M290.434,134.938
c0,0,4.426,6.422,4.673,9.203c0.171,1.925-0.751,6.394-2.025,7.245c-1.815,1.214-7.728-3.23-7.728-3.23L290.434,134.938z"/>
<path fill="#424142" stroke="#000000" stroke-width="0.25" stroke-miterlimit="10" d="M287.158,126.417h-0.908v-0.833h-5v0.833
h-0.993c0.003,0.117,0.015,0.229,0.015,0.348v15.422c0,4.61-2.687,8.349-6,8.349h-25c-3.313,0-6-3.738-6-8.349v-15.422
c0-0.118,0.011-0.23,0.015-0.348h-1.119v-0.833h-5v0.833h-1.199c-0.124,0.669-0.197,1.365-0.197,2.087v22.147
c0,4.61,2.687,8.349,6,8.349h39.583c3.313,0,6-3.738,6-8.349v-22.147C287.354,127.782,287.281,127.086,287.158,126.417z"/>
<path fill="#D6A685" stroke="#BA9168" stroke-width="0.25" stroke-miterlimit="10" d="M232.42,134.938
c0,0-4.425,6.422-4.673,9.203c-0.171,1.925,0.751,6.394,2.025,7.245c1.815,1.214,7.727-3.23,7.727-3.23L232.42,134.938z"/>
<g>
<path fill="#EBB789" stroke="#C3996B" stroke-width="0.25" stroke-miterlimit="10" d="M232.876,145.963
c0,0,0.137,0.129-0.119,0.128c-0.902-0.003,0.79,2.842,1.599,3.242c2.943,1.456,11.196,0.29,12.908-2.524
c0.376-0.617,0.248-3.348-0.285-2.873c-1.528,1.364-4.473,0.662-4.473,0.662s2.94,0.374,4.415-0.846
c0.787-0.65,1.082-4.528,0.128-4.141c-2.34,0.95-5.744,0.766-5.744,0.766s3.64-0.21,5.679-0.978
c1.147-0.433,1.245-5.443,0.125-4.928c-2.998,1.379-6.156,1.212-6.156,1.212s3.492,0.042,6.086-1.379
c1.555-0.851,0.382-7.08-1.396-6.944c-7.403,0.563-11.077,0.177-12.742,1.556c-0.732,0.605-2.092,4.076-1.278,4.599
c0.773,0.496,1.112,0.793,1.112,0.793s-0.139,0.041-1.157-0.6c-1.301-0.816-1.986,5.729-0.506,6.143
c0.524,0.146,0.222,0.063,0.222,0.063s0.467,0.146-0.268,0.129c-1.533-0.036,0.135,5.875,1.669,5.911
C232.958,145.96,232.876,145.963,232.876,145.963z"/>
<path fill="#DDA885" d="M234.458,148.958c0,0,3.333,1.917,10.792-0.958c2.289-0.882,2.256-3.986,1.541-3.312
c-0.75,0.708-2.539,0.791-3.416,0.479c-1.875-0.667,2.438,2.127,1.75,2.416C239.068,150.126,234.458,148.958,234.458,148.958z"/>
<path fill="#DDA885" d="M241.688,140.75c0,0,2.303,0.095,3.063,0c0.632-0.079,2.472-0.625,2.472-0.625s-0.08,1.388-0.159,1.844
c-0.063,0.358-0.375,1.406-0.375,1.406s-0.953-1.477-1.438-1.781C244.476,141.105,241.688,140.75,241.688,140.75z"/>
<path fill="#DDA885" d="M241.094,136.094c0,0,2.758-0.124,3.656-0.313c0.639-0.134,2.472-0.844,2.472-0.844
s0.249,1.736,0.185,2.313c-0.049,0.447-0.531,1.719-0.531,1.719s-0.391-1.796-0.844-2.156
C245.054,136.037,241.094,136.094,241.094,136.094z"/>
<path fill="#DDA885" d="M239.068,128.156c0,0,2.998-0.086,3.995-0.156c0.697-0.049,2.781-0.281,2.781-0.281
s0.877,1.128,1.063,1.563c0.238,0.559,0.5,2.375,0.5,2.375s-1.416-2.35-2.188-2.781
C243.868,128.119,239.068,128.156,239.068,128.156z"/>
<path fill="#EBB789" stroke="#C3996B" stroke-width="0.25" stroke-miterlimit="10" d="M291.052,145.963
c0,0-0.138,0.129,0.119,0.128c0.901-0.003-0.79,2.842-1.599,3.242c-2.943,1.456-11.196,0.29-12.908-2.524
c-0.376-0.617-0.248-3.348,0.285-2.873c1.527,1.364,4.473,0.662,4.473,0.662s-2.94,0.374-4.415-0.846
c-0.786-0.65-1.082-4.528-0.128-4.141c2.34,0.95,5.743,0.766,5.743,0.766s-3.64-0.21-5.679-0.978
c-1.148-0.433-1.246-5.443-0.126-4.928c2.997,1.379,6.155,1.212,6.155,1.212s-3.492,0.042-6.086-1.379
c-1.555-0.851-0.381-7.08,1.396-6.944c7.403,0.563,11.077,0.177,12.742,1.556c0.732,0.605,2.092,4.076,1.279,4.599
c-0.773,0.496-1.112,0.793-1.112,0.793s0.14,0.041,1.157-0.6c1.301-0.816,1.986,5.729,0.506,6.143
c-0.523,0.146-0.222,0.063-0.222,0.063s-0.468,0.146,0.269,0.129c1.532-0.036-0.136,5.875-1.67,5.911
C290.971,145.96,291.052,145.963,291.052,145.963z"/>
<path fill="#DDA885" d="M289.469,148.958c0,0-3.332,1.917-10.791-0.958c-2.289-0.882-2.256-3.986-1.541-3.312
c0.75,0.708,2.539,0.791,3.416,0.479c1.875-0.667-2.438,2.127-1.75,2.416C284.859,150.126,289.469,148.958,289.469,148.958z"/>
<path fill="#DDA885" d="M282.24,140.75c0,0-2.303,0.095-3.063,0c-0.633-0.079-2.472-0.625-2.472-0.625s0.079,1.388,0.159,1.844
c0.063,0.358,0.375,1.406,0.375,1.406s0.953-1.477,1.438-1.781C279.452,141.105,282.24,140.75,282.24,140.75z"/>
<path fill="#DDA885" d="M282.834,136.094c0,0-2.758-0.124-3.656-0.313c-0.639-0.134-2.472-0.844-2.472-0.844
s-0.249,1.736-0.185,2.313c0.049,0.447,0.531,1.719,0.531,1.719s0.391-1.796,0.844-2.156
C278.873,136.037,282.834,136.094,282.834,136.094z"/>
<path fill="#DDA885" d="M284.859,128.156c0,0-2.997-0.086-3.994-0.156c-0.697-0.049-2.781-0.281-2.781-0.281
s-0.877,1.128-1.063,1.563c-0.238,0.559-0.5,2.375-0.5,2.375s1.416-2.35,2.188-2.781
C280.06,128.119,284.859,128.156,284.859,128.156z"/>
</g>
</g>
<g id="plane">
<path fill="#CE3232" stroke="#931C24" stroke-miterlimit="10" d="M297.126,174.5c0,0,55.101,6.274,72.374,12.5
c0.949,0.342,3.408,1.002,3.5,2.006c0.192,2.118-4.514,4.733-6.5,5.494c-15.415,5.906-66.001,2-66.001,2L297.126,174.5z"/>
<path fill="#CE3232" stroke="#931C24" stroke-miterlimit="10" d="M225.507,174.5c0,0-55.101,6.274-72.374,12.5
c-0.949,0.342-3.408,1.002-3.5,2.006c-0.192,2.118,4.514,4.733,6.5,5.494c15.415,5.906,66.001,2,66.001,2L225.507,174.5z"/>
<ellipse fill="#CE3232" stroke="#931C24" stroke-width="0.75" stroke-miterlimit="10" cx="260.962" cy="189.006" rx="49.754" ry="42.661"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="246.625" y1="149.8066" x2="276.7061" y2="149.8066">
<stop offset="0" style="stop-color:#5BCBF1"/>
<stop offset="0.0017" style="stop-color:#5BCAF1"/>
<stop offset="0.1744" style="stop-color:#4197D1"/>
<stop offset="0.3181" style="stop-color:#2F78BC"/>
<stop offset="0.4256" style="stop-color:#2467B1"/>
<stop offset="0.4848" style="stop-color:#2061AE"/>
<stop offset="0.6679" style="stop-color:#2C66B1"/>
<stop offset="1" style="stop-color:#3B6EB6"/>
</linearGradient>
<path fill="url(#SVGID_1_)" stroke="#004C6D" stroke-width="0.25" stroke-miterlimit="10" d="M246.625,151.596
c0,0,2.098,2.086,3.006,2.404c5.572,1.955,17.985,1.766,23.619,0c1.004-0.314,3.456-2.404,3.456-2.404s-3.442-6.027-5.433-7.002
c-2.223-1.089-7.133,0.531-9.608,0.531c-2.313,0-7.461-1.542-9.541-0.531C250.123,145.567,246.625,151.596,246.625,151.596z"/>
<path fill="#BF312F" d="M261.375,219.229c-25.047,0-45.655-16.281-48.226-37.173c-0.444,2.261-0.688,4.581-0.688,6.95
c0,22.967,21.714,41.585,48.5,41.585c26.787,0,48.5-18.618,48.5-41.585c0-1.491-0.096-2.963-0.274-4.413
C305.328,204.249,285.398,219.229,261.375,219.229z"/>
<ellipse fill="#969696" stroke="#BCBEC0" stroke-width="7" stroke-miterlimit="10" cx="260.962" cy="189.006" rx="27.5" ry="25"/>
<radialGradient id="propeller_1_" cx="261.3926" cy="188.5" r="50.9983" gradientUnits="userSpaceOnUse">
<stop offset="0.3011" style="stop-color:#BCBEC0"/>
<stop offset="0.4531" style="stop-color:#E6E7E8"/>
<stop offset="0.9899" style="stop-color:#F1F2F2"/>
<stop offset="0.9936" style="stop-color:#F9ED32"/>
</radialGradient>
<path id="propeller" fill="url(#propeller_1_)" stroke="#6D6E71" stroke-width="0.5" stroke-miterlimit="10" d="M291.618,198.024
l-25.939-12.274l2.33-28.48c0,0-0.02-31.189-6.862-31.182c-6.844,0.009-7.013,31.18-7.013,31.18l2.598,28.423l-26.065,12.334
c0,0-27.001,15.611-23.572,21.534c3.429,5.923,30.507-9.517,30.507-9.517l23.541-16.62l23.541,16.62
c0,0,27.079,15.439,30.507,9.517C318.62,213.636,291.618,198.024,291.618,198.024z M261.155,188.442l-0.013,0.022l-0.013-0.022
H261.155z"/>
<radialGradient id="SVGID_2_" cx="261.1426" cy="189.0049" r="11.9452" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#D1D3D4"/>
<stop offset="1" style="stop-color:#A7A9AC"/>
</radialGradient>
<ellipse fill="url(#SVGID_2_)" stroke="#6D6E71" stroke-width="2" stroke-miterlimit="10" cx="261.143" cy="189.005" rx="12.5" ry="11.363"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="155.7402" y1="175.625" x2="177.2904" y2="150.7379">
<stop offset="0.01" style="stop-color:#BCBEC0"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon fill="url(#SVGID_3_)" points="149.627,187.171 180.5,140.842 152,186.134 "/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="59.2358" y1="175.626" x2="80.786" y2="150.7389" gradientTransform="matrix(-1 0 0 1 426.1279 0)">
<stop offset="0.01" style="stop-color:#BCBEC0"/>
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
</linearGradient>
<polygon fill="url(#SVGID_4_)" points="373.006,187.171 342.133,140.842 370.633,186.134 "/>
</g>
<rect x="260.5" y="13.75" fill="#6CBE45" width="0.462" height="217.917"/>
</g>
</svg>

Instead of using transform origin, set the center of the rotation with 2 diferent translates.
(you move the element to wherever you want, rotate it, and move it back to where it was).
Your animation will be
#keyframes propel {
0% {transform: translate(257px, 188px) rotate(0deg) translate(-257px, -188px);}
100% {transform: translate(257px, 188px) rotate(360deg) translate(-257px, -188px);}
}
fixed codepen

Related

moving svg circle using css animation

i'm trying to move svg circle using css animation on the whole dotted line cirlce, but the problem is when i use this code it start to move but not on all dotted circle line , any help?
#c1{
animation: moving 1s infinite linear;
/* motion-rotation: reverse; */
}
#-webkit-keyframes moving{
50% {transform: rotate(0.5deg)}
100% {transform: rotate(0.5deg)}
}
<svg id="eedf7e36-f7ba-41f3-811a-5462d78ed19b" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 910.88794 653.61419">
<rect y="646.47623" width="431.1819" height="1.87469" fill="#3f3d56"/>
<polygon points="109.607 639.942 121.866 639.942 127.699 592.654 109.605 592.654 109.607 639.942" fill="#ffb8b8"/>
<path d="M251.53582,759.63143h38.53073a0,0,0,0,1,0,0V774.5183a0,0,0,0,1,0,0H266.42267a14.88685,14.88685,0,0,1-14.88685-14.88685v0A0,0,0,0,1,251.53582,759.63143Z" transform="translate(397.08134 1410.94447) rotate(179.99738)" fill="#2f2e41"/><polygon points="44.379 637.585 56.532 639.205 68.564 593.103 50.629 590.712 44.379 637.585" fill="#ffb8b8"/><path d="M185.6415,759.43939h38.53073a0,0,0,0,1,0,0v14.88687a0,0,0,0,1,0,0H200.52836a14.88686,14.88686,0,0,1-14.88686-14.88686v0a0,0,0,0,1,0,0Z" transform="translate(162.1087 1430.92651) rotate(-172.40554)" fill="#2f2e41"/><polygon points="61.796 444.64 130.796 447.64 127.796 622.64 109.796 620.64 95.796 501.64 62.796 628.64 44.796 625.64 61.796 444.64" fill="#2f2e41"/><path d="M252.35236,463.83242l-24-4.90286-15,109.90286s44,29,58-1Z" transform="translate(-144.55603 -123.1929)" fill="#11067d"/><circle cx="97.32782" cy="303.17101" r="24.56103" fill="#ffb8b8"/><path d="M228.35236,457.83242l-35,11s17,85-11,129c0,0,35,37,50-46C232.35236,551.83242,244.35236,484.83242,228.35236,457.83242Z" transform="translate(-144.55603 -123.1929)" fill="#2f2e41"/><path d="M252.35236,463.83242l26,16s14,117,0,128S252.35236,463.83242,252.35236,463.83242Z" transform="translate(-144.55603 -123.1929)" fill="#2f2e41"/><path d="M289.1621,624.79959a10.0558,10.0558,0,0,1,.96818-15.3889l-10.57065-34.13562,17.83265,5.17981,7.30413,31.62164a10.11027,10.11027,0,0,1-15.53431,12.72307Z" transform="translate(-144.55603 -123.1929)" fill="#ffb8b8"/><path d="M199.338,614.92719a10.05577,10.05577,0,0,1-1.00976-15.38624l-14.85349-32.50158,18.349,2.85437,11.292,30.42646a10.11027,10.11027,0,0,1-13.77778,14.607Z" transform="translate(-144.55603 -123.1929)" fill="#ffb8b8"/><polygon points="57.796 346.64 48.796 345.64 25.796 420.64 48.796 472.64 66.796 461.64 46.796 418.64 62.796 372.64 57.796 346.64" fill="#2f2e41"/>
<polygon points="128.796 355.64 133.796 356.64 157.796 473.64 141.796 478.64 122.796 409.64 128.796 355.64" fill="#2f2e41"/><path d="M225.00655,436.44921a14.06316,14.06316,0,0,1,8.44415-11.03667c4.7277-1.93846,10.06074-1.11966,15.15695-.7489s10.76991.04877,14.44758-3.49856c3.3597-3.24064,4.11524-8.61848,2.49281-12.99537s-5.29609-7.775-9.46944-9.866a40.79142,40.79142,0,0,0-13.47062-3.56c-6.811-.82288-13.80511-.92776-20.44341.80412s-4.9267,5.44408-8.81681,11.095-5.05548,13.34984-2.08959,19.53611c1.98454,4.13936,5.54088,7.27259,9.004,10.28584" transform="translate(-144.55603 -123.1929)" fill="#2f2e41"/>
<path d="M774.394,707.49843l-.00049-1.87469c3.72742-.00092,7.51117-.07782,11.24732-.227l.07507,1.87286C781.95514,707.42061,778.14618,707.49752,774.394,707.49843Zm-11.31872-.21692c-3.74756-.14648-7.55005-.37072-11.30134-.66638l.1474-1.8692c3.727.29474,7.50434.51721,11.22718.66272Zm33.942-.6911-.14923-1.8692c3.72009-.29748,7.48511-.67553,11.18964-1.12317l.22522,1.86188c-3.72968.45032-7.51984.8302-11.26563,1.13043Zm-56.51025-1.093c-3.738-.44764-7.51026-.97583-11.213-1.56989l.29749-1.85089c3.67755.59039,7.42511,1.11493,11.13794,1.5589Zm78.98608-1.62024-.29932-1.85089c3.67664-.59412,7.399-1.27424,11.06379-2.01935l.37347,1.83624c-3.689.75153-7.43652,1.43536-11.13788,2.034Zm-101.33929-1.97083c-3.68946-.74695-7.4068-1.579-11.05005-2.47064l.4458-1.82159c3.619.887,7.31164,1.7127,10.97589,2.45416Zm123.525-2.54657-.44855-1.81976c3.63-.89343,7.2851-1.87195,10.8642-2.90906l.52179,1.80145C849.01239,697.47591,845.33258,698.46084,841.67883,699.35976Zm-145.51611-2.84045c-3.61487-1.04352-7.253-2.1731-10.81342-3.35761l.59223-1.77948c3.53656,1.17719,7.15051,2.29944,10.74109,3.33564ZM863.42511,693.061l-.59406-1.77771c3.53888-1.18267,7.10248-2.45416,10.59284-3.78051l.66638,1.752C870.57605,690.59035,866.98779,691.871,863.42511,693.061Zm-188.77344-3.70458c-3.51691-1.33283-7.05945-2.75715-10.52966-4.23548l.73462-1.72461c3.4469,1.46826,6.96606,2.88349,10.45965,4.20618Zm209.91052-4.32331-.736-1.72461c3.42718-1.46368,6.8681-3.01526,10.22668-4.61261l.80555,1.69348C891.477,681.99679,888.01227,683.55929,884.56219,685.0331ZM653.775,680.46352c-3.40521-1.61658-6.81915-3.32281-10.14654-5.07214l.87237-1.65869c3.305,1.73645,6.69556,3.43176,10.07788,5.03735Zm251.18836-5.13165-.8733-1.65869c3.30182-1.73743,6.60907-3.5636,9.82941-5.42639l.93921,1.62207c-3.24231,1.87561-6.57153,3.71368-9.89526,5.463Zm-271.265-5.41724c-3.267-1.88843-6.52991-3.86383-9.69849-5.87127l1.00324-1.58362c3.14709,1.99371,6.38849,3.9563,9.63348,5.83282Zm290.8313-5.90423-1.00323-1.58362c3.14251-1.991,6.29418-4.07709,9.36712-6.20172l1.06549,1.5415c-3.093,2.13928-6.26581,4.24-9.42932,6.24384ZM614.548,657.78853c-3.09991-2.142-6.19214-4.37188-9.19092-6.62829l1.12684-1.49756c2.97912,2.24084,6.05065,
4.45605,9.12957,6.58435Zm328.58582-6.64019-1.12763-1.49756c2.97223-2.23535,5.94818-4.56867,8.84534-6.93585l1.18634,1.45178c-2.9165,2.38275-5.91254,4.73163-8.904,6.98163Zm-346.69251-6.9798c-2.91046-2.37817-5.81268-4.84784-8.6261-7.34137l1.24311-1.40234c2.7951,2.47613,5.6781,4.93023,8.56933,7.29193Zm364.2157-7.33679-1.2431-1.40235c2.79285-2.47522,5.57373-5.041,8.265-7.62512l1.298,1.35291c-2.70856,2.60064-5.50782,5.18292-8.31983,7.67456ZM579.49121,629.149c-2.704-2.59784-5.3985-5.2909-8.00775-8.00409l1.35107-1.29987c2.59235,2.6958,5.26892,5.37146,7.95557,7.951Zm397.49444-7.99677-1.35113-1.29986c2.58411-2.68757,5.15179-5.46759,7.63245-8.2641l1.40234,1.24493C982.17218,615.64712,979.58722,618.44631,976.98565,621.15218Zm-413.18231-8.32263c-2.49945-2.81757-4.96869-5.71655-7.34-8.61652l1.45178-1.18634c2.35483,2.88074,4.808,5.7605,7.29056,8.55793Zm428.212-8.61835-1.45178-1.18634c2.369-2.8963,4.7069-5.87494,6.94958-8.85266L999.01068,595.3C996.75335,598.29781,994.399,601.29568,992.01532,604.2112Zm-442.5391-8.89752c-2.25915-2.99969-4.48767-6.08453-6.62326-9.17029l1.54151-1.06732c2.1214,3.06561,4.33481,6.13031,6.57931,9.10986Zm456.16825-9.20142-1.54151-1.06549c2.12915-3.07934,4.22174-6.23742,6.2182-9.38635l1.58362,1.00324C1009.89459,579.83364,1007.78833,583.01278,1005.64447,586.11226Zm-469.04029-9.3955c-2.00881-3.16724-3.98144-6.41956-5.86349-9.66736l1.62207-.93921c1.8692,3.22583,3.829,6.45618,5.82413,9.60236Zm481.17835-9.74793-1.62207-.93921c1.87653-3.24322,3.70819-6.56146,5.4447-9.86139l1.65869.87329c-1.74756,3.3219-3.592,6.66218-5.48138,9.92731ZM525.27316,557.155c-1.74655-3.31641-3.45007-6.71527-5.063-10.10217l1.69254-.80555c1.60238,3.364,3.29446,6.74,5.02911,10.03443Zm503.06821-10.25684-1.69348-.80554c1.60467-3.37591,3.16357-6.8324,4.63183-10.27423l1.72461.736C1031.526,540.01906,1029.957,543.49935,1028.34137,546.89815Zm-512.781-10.13788c-1.4765-3.45282-2.899-6.97522-4.22861-10.47015l1.752-.66638c1.32089,3.47021,2.73379,6.96973,4.20022,10.39874Zm521.68585-10.73468-1.753-.66455c1.3291-3.50683,2.60334-7.08142,3.7851-10.623l1.77771.59314C1039.867,518.89748,1038.58453,522.495,1037.24621,526.02559ZM507.52014,515.62777c-1.19366-3.5636-2.32965-7.20038-3.37637-10.80792l1.80053-.52179c1.03989,3.58282,2.16809,7.19488,3.35352,10.73468Zm536.90088-11.11-1.80145-.52c1.03436-3.57733,2.0111-7.23242,2.90362-10.8656l1.81976.44672C1046.44494,497.23678,1045.46179,500.91756,1044.421,504.51778Zm-543.212-10.634c-.90072-3.65057-1.73785-7.36609-2.48938-11.045l1.83719-.37531c.746,3.65424,1.57767,7.346,2.472,10.9718Zm548.6109-11.35168-1.83807-.37348c.74146-3.65149,1.41882-7.37433,2.01386-11.06421l1.85089.2984C1051.24792,475.10744,1050.566,478.855,1049.81994,482.53213ZM496.67972,471.70131c-.601-3.70092-1.13553-7.47229-1.58866-11.20977l1.861-.22522c.45038,3.71283.9813,7.45855,1.57859,11.1347Zm556.74319-11.52282-1.86188-.22339c.4458-3.711.822-7.47592,1.11676-11.1901l1.86921.14829c-.29755,3.73935-.6756,7.52948-1.12409,11.26514ZM493.95462,449.22771c-.30255-3.74438-.5332-7.54687-.68561-11.30221l1.87286-.076c.15149,3.73019.3808,7.50751.681,11.22717Zm561.266-11.61484-1.87286-.07415c.14648-3.73569.22149-7.519.22149-11.245l-.00091-.62109h1.87469l.00092.617c.00006,3.7544-.07495,7.56241-.22327,11.32324ZM494.907,426.60448h-1.87469l.00045-.31488c0-3.65695.071-7.36059.21146-11.00335l1.87286.07232c-.13913,3.619-.20962,7.29788-.20962,10.93515Zm558.41419-12.17413c-.15473-3.72241-.38721-7.49973-.69294-11.22626l1.86921-.15286c.30664,3.75168.541,7.55374.69659,11.3013ZM495.774,404.13094l-1.8692-.14645c.29474-3.754.66916-7.54459,1.11219-11.26746l1.86187.22153C496.43851,396.63668,496.06686,400.40258,495.774,404.13094Zm555.71378-12.11554c-.45221-3.69723-.98676-7.443-1.59094-11.1329l1.85089-.30252c.60687,3.71463,1.14606,7.48553,1.6001,11.2084ZM498.4313,381.80016l-1.85092-.2966c.59409-3.71188,1.27194-7.46081,2.01569-11.14157l1.83716.37073C499.695,374.38921,499.02173,378.11254,498.4313,381.80016Zm549.42606-11.97824c-.75244-3.66336-1.5882-7.35327-2.48438-10.96857l1.81977-.45129c.90258,3.63956,1.74383,7.3551,2.50085,11.04272Zm-544.97681-10.066-1.82116-.44488c.8916-3.64872,1.87106-7.33039,2.91091-10.94339l1.80149.51855c-1.03305,3.58878-2.00559,7.24573-2.89127,10.86972Zm539.566-11.76175c-1.04352-3.5805-2.175-7.19125-3.36493-10.73147l1.77765-.59684c1.19733,3.564,2.337,7.199,3.3869,10.80381ZM509.101,338.14373l-1.779-.59134c1.18634-3.56955,2.4642-7.16928,3.7984-10.699l1.75388.66275C511.54873,331.02251,510.27911,334.598,509.101,338.14373Zm526.18176-11.46747c-1.33191-3.48715-2.7489-6.98438-4.21167-10.39508l1.72278-.73871c1.47284,3.43359,2.8999,6.95416,4.241,10.46466Zm-518.20739-9.6225-1.7255-.73413c1.4733-3.46335,3.03861-6.94546,4.652-10.34842l1.69391.8028C520.09292,310.1545,518.5386,313.6133,517.07538,317.05376Zm509.36572-10.99283c-1.60468-3.36038-3.29993-6.73446-5.03919-10.02847l1.65686-.87555c1.752,3.31644,3.45923,6.713,5.074,10.09668Zm-499.71253-9.36847-1.66052-.87054c1.74747-3.33063,3.58829-6.6727,5.4708-9.93375l1.6239.93735c-1.87018,3.23911-3.69864,6.55917-5.43421,9.86691ZM1015.959,286.21224c-1.87469-3.22717-3.83728-6.45575-5.83465-9.59689l1.58178-1.006c2.01111,3.16221,3.98652,6.41272,5.874,9.661Zm-477.96945-9.02338-1.58453-1.00235c2.01111-3.17959,4.11419-6.361,6.25024-9.45544l1.54242,1.065c-2.12189,3.07388-4.21033,6.23377-6.20813,9.39276Zm465.9166-9.931c-2.12641-3.06424-4.34351-6.1271-6.58893-9.10211l1.49573-1.12958c2.261,2.99512,4.49267,6.07813,6.63287,9.16346Zm-453.1287-8.59542-1.4985-1.12592c2.25915-3.007,4.60941-6.00766,6.98529-8.91949l1.4527,1.18542c-2.36029,2.89212-4.695,5.87305-6.93952,8.85995Zm439.58927-9.34012c-2.36444-2.88483-4.82135-5.76142-7.30017-8.54969l1.40051-1.24581c2.49628,2.807,4.96869,5.70282,7.34961,8.60733ZM565.00482,241.229l-1.40329-1.24215c2.48892-2.81208,5.07077-5.614,7.6741-8.32816l1.353,1.298c-2.586,2.69577-5.15088,5.47943-7.62378,8.27227Zm410.42383-8.70987c-2.59418-2.69168-5.2735-5.36367-7.96472-7.94232l1.29712-1.35385c2.70861,2.596,5.40625,5.28589,8.0169,7.99542Zm-394.85358-7.52215-1.29986-1.35111c2.705-2.6029,5.50189-5.18792,8.31213-7.68417l1.24487,1.40143c-2.79193,2.47977-5.57007,5.04834-8.2572,7.63382Zm378.61286-8.03934c-2.80109-2.47656-5.68726-4.92706-8.57715-7.28277l1.18451-1.45316c2.909,2.37177,5.81451,4.83826,8.63391,7.33176Zm-361.8014-6.89007-1.18817-1.45c2.90863-2.38229,5.90192-4.73437,8.89618-6.99168l1.12866,1.49666c-2.97461,2.24222-5.94775,4.57919-8.83673,6.945Zm344.35877-7.32718c-2.99054-2.24453-6.06531-4.45655-9.13642-6.57474l1.06366-1.54334c3.09217,2.13239,6.18708,4.35906,9.19867,6.61869Zm-326.415-6.20356-1.06824-1.54058c3.09033-2.14154,6.26074-4.24555,9.4234-6.25391l1.00507,1.5827c-3.14154,1.99457-6.291,4.0844-9.36023,6.21175Zm307.8822-6.57519c-3.16083-1.99645-6.404-3.95491-9.64081-5.82092l.93738-1.62389c3.257,1.87837,6.5221,3.8501,9.7049,5.85983Zm-288.9223-5.46529-.94055-1.62205c3.24139-1.87975,6.56878-3.7215,9.88885-5.47307l.87512,1.65776c-3.29858,1.74008-6.60357,3.56947-9.82342,5.4373Zm269.41272-5.78476c-3.31091-1.73465-6.70337-3.42582-10.08386-5.02636l.80188-1.69437c3.40338,1.61107,6.81958,3.31367,10.15161,5.06023ZM654.14435,174.0248l-.80689-1.69255c3.38049-1.61153,6.843-3.17775,10.29163-4.65517l.73779,1.72321c-3.42535,1.46728-6.86493,3.023-10.22253,4.62445Zm229.1922-4.95451c-3.4455-1.46324-6.96607-2.8743-10.46466-4.19521l.66271-1.75387c3.52149,1.3296,7.06678,2.75073,10.53425,4.22358ZM674.76471,165.1941l-.66779-1.752c3.50775-1.33739,7.09424-2.62166,10.65961-3.81761l.59588,1.77768c-3.54107,1.1876-7.10333,2.46365-10.5877,3.79187Zm187.4768-4.08673c-3.54254-1.1749-7.15741-2.293-10.74475-3.32331l.51813-1.80146c3.61121,1.03712,7.24982,2.16259,10.81616,3.34527Zm-166.15478-3.06562-.52362-1.79965c3.60522-1.049,7.28418-2.03854,10.93426-2.94157l.45038,1.81978c-3.62585.897-7.28,1.88014-10.861,2.92138Zm144.53943-3.14206c-3.61945-.88287-7.31348-1.70443-10.97864-2.44178l.36981-1.83809c3.68988.74238,7.40863,1.56988,11.0528,2.45826Zm-122.709-2.25692-.37622-1.83626c3.67523-.75246,7.42194-1.44081,11.13611-2.04634l.30206,1.85C725.28924,151.212,721.56775,151.8958,717.91717,152.64277Zm100.66236-2.18044c-3.68671-.58768-7.43476-1.10853-11.1402-1.547l.22058-1.86189c3.73016.44167,7.50342.96573,11.21436,1.558Zm-78.46662-1.4367-.227-1.861c3.72925-.454,7.519-.839,11.2638-1.14285l.152,1.8683c-3.72009.30255-7.48461.68427-11.18872,1.13555Zm56.134-1.20876c-3.71644-.28972-7.49427-.5085-11.22809-.64992l.07141-1.87379c3.75854.1428,7.561.363,11.30224.65449Zm-33.71857-.61377-.07691-1.87286c3.74848-.1547,7.557-.23618,11.31965-.24257l.00274,1.87469c-3.73743.00641-7.52118.08742-11.24542.24074Z" transform="translate(-144.55603 -123.1929)" fill="#ccc"/><circle cx="530.38349" cy="297.68538" r="180.90894" fill="#3f3d56"/><ellipse cx="466.17488" cy="297.68538" rx="96.07861" ry="132.16663" fill="#fff"/><ellipse cx="434.32575" cy="325.68538" rx="26.81427" ry="42.18085" fill="#3f3d56"/><circle cx="885.81702" cy="196.65475" r="17.80969" fill="#11067d"/><circle id="c" cx="680.09215" cy="26.24586" r="26.24586" fill="#11067d"/><circle id="c1" cx="662.70442" cy="581.35092" r="17.80969" fill="#11067d"/></svg>
</div>
.rotate {
-webkit-animation-iteration-count:infinite;
-webkit-animation-timing-function:linear;
-webkit-animation-name:orbit;
-webkit-animation-duration:5s;
-moz-animation-iteration-count:infinite;
-moz-animation-timing-function:linear;
-moz-animation-name:orbit;
-moz-animation-duration:5s;
}
#-webkit-keyframes orbit {
from { -webkit-transform:rotate(0deg); -webkit-transform-origin: 50% 50%; }
to { -webkit-transform:rotate(360deg); -webkit-transform-origin: 50% 50%; }
}
#-moz-keyframes orbit {
from { -moz-transform:rotate(0deg); -moz-transform-origin: 50% 50%; }
to { -moz-transform:rotate(360deg); -moz-transform-origin: 50% 50%; }
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve">
<g>
<g class="rotate">
<g>
<circle fill="#FFFFFF" cx="250" cy="250" r="220.797"/>
<circle fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="7.0069,7.0069" cx="250" cy="250" r="220.797"/>
</g>
<circle stroke="#000000" stroke-miterlimit="10" stroke-dasharray="7" cx="363.787" cy="63.876" r="23.894"/>
<circle stroke="#000000" stroke-miterlimit="10" stroke-dasharray="7" cx="418.655" cy="394.851" r="21.239"/>
<circle stroke="#000000" stroke-miterlimit="10" stroke-dasharray="7" cx="85.911" cy="105.469" r="21.239"/>
</g>
<g>
<circle stroke="#000000" stroke-miterlimit="10" stroke-dasharray="7" cx="199.608" cy="294.041" r="150.885"/>
<ellipse transform="matrix(0.9889 -0.1488 0.1488 0.9889 -43.6117 23.8941)" fill="#FFFFFF" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="7" cx="137.843" cy="303.338" rx="85.912" ry="96.809"/>
<ellipse transform="matrix(0.9889 -0.1488 0.1488 0.9889 -45.7056 14.6961)" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="7" cx="75.344" cy="312.744" rx="16.372" ry="24.336"/>
</g>
</g>
</svg>
Your svg code was not correct. So I create new one. I used Keyframe animation where I mentioned rotate css and most important transform-origin.

How can I make gradient line segments move along an SVG path

I have an animation I would like to make on an HTML5 document. I would like to have some short line segments move along a path. The line segments should have a gradient so that the front is opaque and the tail fade out to fully transparent.
I could use a stroke-dasharray and animate an offset (https://css-tricks.com/svg-line-animation-works/#article-header-id-4) but so far as I can tell linear gradients for strokes behave essentially to the entire shape, not just the stroke segment (https://codepen.io/plava/pen/BjavpN).
Is there perhaps a way that I can take a line and slide it along another path? That would let me apply a gradient to that line alone. My lines are moving from left to right sort of following a sine wave like curve, so if the gradient doesn't bend with the line that is okay.
This is part of an Electron app, so it only needs to be compatible with a somewhat recent version of Chromium.
One way would be to use multiple paths with different length dashes and different opacities. As long as the dash arrays have the same total length, and the dashoffsets plus the first element of the dash array is the same value for each path, the ends of the dashes will be in the same position:
#path {
stroke-dasharray: 10 90;
animation: dash 5s linear alternate infinite;
stroke: black;
stroke-width: 5;
}
#path2 {
stroke-dasharray: 20 80;
animation: dash2 5s linear alternate infinite;
stroke: rgba(0,0,0,0.5);
stroke-width: 5;
}
#keyframes dash {
from {
stroke-dashoffset: 100;
}
to {
stroke-dashoffset: 0;
}
}
#keyframes dash2 {
from {
stroke-dashoffset: 110;
}
to {
stroke-dashoffset: 10;
}
}
It's kind of a hassle to keep adding more css, so I automated the creation of the css using some javascript here: https://jsfiddle.net/aqwg7ed6/
That fiddle automatically creates 32 paths which creates a nice effect.
here's how i managed to do so:
<svg id="group-01" width="1668" height="1527" viewBox="0 0 1668 1527" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<path id="loop-01" d="M 417.00,-648.50 C 647.03,-648.50 833.50,-462.03 833.50,-232.00 833.50,-232.00 833.50,253.00 833.50,253.00 833.50,483.03 647.03,669.50 417.00,669.50 417.00,669.50 417.00,669.50 417.00,669.50 186.97,669.50 0.50,483.03 0.50,253.00 0.50,253.00 0.50,-232.00 0.50,-232.00 0.50,-462.03 186.97,-648.50 417.00,-648.50 417.00,-648.50 417.00,-648.50 417.00,-648.50 Z" />
<path id="loop-02" d="M 1250.00,-648.50 C 1480.03,-648.50 1666.50,-462.03 1666.50,-232.00 1666.50,-232.00 1666.50,253.00 1666.50,253.00 1666.50,483.03 1480.03,669.50 1250.00,669.50 1250.00,669.50 1250.00,669.50 1250.00,669.50 1019.97,669.50 833.50,483.03 833.50,253.00 833.50,253.00 833.50,-232.00 833.50,-232.00 833.50,-462.03 1019.97,-648.50 1250.00,-648.50 1250.00,-648.50 1250.00,-648.50 1250.00,-648.50 Z" />
<path id="loop-03" d="M 418.00,670.50 C 648.03,670.50 834.50,856.97 834.50,1087.00 834.50,1087.00 834.50,1572.00 834.50,1572.00 834.50,1802.03 648.03,1988.50 418.00,1988.50 418.00,1988.50 418.00,1988.50 418.00,1988.50 187.97,1988.50 1.50,1802.03 1.50,1572.00 1.50,1572.00 1.50,1087.00 1.50,1087.00 1.50,856.97 187.97,670.50 418.00,670.50 418.00,670.50 418.00,670.50 418.00,670.50 Z" />
<path id="loop-04" d="M 1251.00,670.50 C 1481.03,670.50 1667.50,856.97 1667.50,1087.00 1667.50,1087.00 1667.50,1572.00 1667.50,1572.00 1667.50,1802.03 1481.03,1988.50 1251.00,1988.50 1251.00,1988.50 1251.00,1988.50 1251.00,1988.50 1020.97,1988.50 834.50,1802.03 834.50,1572.00 834.50,1572.00 834.50,1087.00 834.50,1087.00 834.50,856.97 1020.97,670.50 1251.00,670.50 1251.00,670.50 1251.00,670.50 1251.00,670.50 Z" />
<radialGradient id="fade-01" cx="0" cy="0" fx="0" fy="0" r="200" gradientUnits="userSpaceOnUse">
<stop stop-color="#80D2B5" stop-opacity="1" offset="0" />
<stop stop-color="#0D1115" stop-opacity="0" offset="1" />
</radialGradient>
<radialGradient id="fade-02" cx="0" cy="0" fx="0" fy="0" r="200" gradientUnits="userSpaceOnUse">
<stop stop-color="#5332D5" stop-opacity="1" offset="0" />
<stop stop-color="#0E1216" stop-opacity="0" offset="1" />
</radialGradient>
<mask id="tail-01" maskUnits="userSpaceOnUse">
<use style="fill:none;stroke:#fff;stroke-width:2;stroke-dasharray:100% -100%" xlink:href="#loop-01">
<animate attributeName="stroke-dashoffset" from="100%" to="-100%" dur="10s" repeatCount="indefinite" />
</use>
</mask>
<mask id="tail-02" maskUnits="userSpaceOnUse">
<use style="fill:none;stroke:#fff;stroke-width:2;stroke-dasharray:100% -100%" xlink:href="#loop-02">
<animate attributeName="stroke-dashoffset" from="100%" to="-100%" dur="10s" repeatCount="indefinite" />
</use>
</mask>
<mask id="tail-03" maskUnits="userSpaceOnUse">
<use style="fill:none;stroke:#fff;stroke-width:2;stroke-dasharray:100% -100%" xlink:href="#loop-03">
<animate attributeName="stroke-dashoffset" from="100%" to="-100%" dur="10s" repeatCount="indefinite" />
</use>
</mask>
<mask id="tail-04" maskUnits="userSpaceOnUse">
<use style="fill:none;stroke:#fff;stroke-width:2;stroke-dasharray:100% -100%" xlink:href="#loop-04">
<animate attributeName="stroke-dashoffset" from="100%" to="-100%" dur="10s" repeatCount="indefinite" />
</use>
</mask>
</defs>
<g style="mask:url(#tail-01)">
<circle style="fill:url(#fade-01);" cx="0" cy="0" r="200">
<animateMotion keyPoints="0;1" keyTimes="0;1" dur="10s" repeatCount="indefinite">
<mpath xlink:href="#loop-01" />
</animateMotion>
</circle>
</g>
<g style="mask:url(#tail-02)">
<circle style="fill:url(#fade-02);" cx="0" cy="0" r="200">
<animateMotion keyPoints="0;1" keyTimes="0;1" dur="10s" repeatCount="indefinite">
<mpath xlink:href="#loop-02" />
</animateMotion>
</circle>
</g>
<g style="mask:url(#tail-03)">
<circle style="fill:url(#fade-02);" cx="0" cy="0" r="200">
<animateMotion keyPoints="0;1" keyTimes="0;1" dur="10s" repeatCount="indefinite">
<mpath xlink:href="#loop-03" />
</animateMotion>
</circle>
</g>
<g style="mask:url(#tail-04)">
<circle style="fill:url(#fade-01);" cx="0" cy="0" r="200">
<animateMotion keyPoints="0;1" keyTimes="0;1" dur="10s" repeatCount="indefinite">
<mpath xlink:href="#loop-04" />
</animateMotion>
</circle>
</g>
<rect x="833.5" y="-648.5" width="833" height="1318" rx="416.5" stroke="white" stroke-opacity="0.08" />
<rect x="834.5" y="670.5" width="833" height="1318" rx="416.5" stroke="white" stroke-opacity="0.08" />
<rect x="1.5" y="670.5" width="833" height="1318" rx="416.5" stroke="white" stroke-opacity="0.08" />
<rect x="0.5" y="-648.5" width="833" height="1318" rx="416.5" stroke="white" stroke-opacity="0.08" />
</svg>

svg fill animation does not work in firefox

Does anybody know why this code doesnt work in FF ? In chrome everything is ok but not in FF. The dots dont fill with the white color, just stay unfilled.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 129.57 26.18">
<defs>
<style>.cls-1{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:2px;}</style>
</defs>
<title>kropeczki</title>
<g id="Warstwa_2" data-name="Warstwa 2">
<g id="Layer_1" data-name="Layer 1">
<circle class="cls-1" cx="13.09" cy="13.09" r="12.09">
<animate
attributeName="fill" from="none" to="#fff" begin="0.7" dur=".1s" fill="freeze" repeatCount="1"/>
</circle>
<circle class="cls-1" cx="64.79" cy="13.09" r="12.09">
<animate
attributeName="fill" from="none" to="#fff" begin="1" dur=".1s" fill="freeze" repeatCount="1"/>
</circle>
<circle class="cls-1" cx="116.49" cy="13.09" r="12.09">
<animate
attributeName="fill" from="none" to="#fff" begin="1.3" dur=".1s" fill="freeze" repeatCount="1"/>
</circle>
</g>
</g>
</svg>
Considering that SMIL doesn't work cross browser, may I suggest you use CSS animation instead
Animate the color none won't work, use transparent
body {
background: gray;
}
.cls-1 {
fill: transparent;
stroke: #fff;
stroke-miterlimit: 10;
stroke-width: 2px;
-webkit-animation-name: setcolor;
-webkit-animation-duration: 2s;
-webkit-animation-fill-mode: forwards;
animation-name: setcolor;
animation-duration: 2s;
animation-fill-mode: forwards;
}
.cls-1:nth-child(2) {
-webkit-animation-delay: .5s;
animation-delay: .5s;
}
.cls-1:nth-child(3) {
-webkit-animation-delay: 1s;
animation-delay: 1s;
}
#keyframes setcolor {
100% {
fill: white;
}
}
#-webkit-keyframes setcolor {
100% {
fill: white;
}
}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 129.57 26.18">
<title>kropeczki</title>
<g id="Warstwa_2" data-name="Warstwa 2">
<g id="Layer_1" data-name="Layer 1">
<circle class="cls-1" cx="13.09" cy="13.09" r="12.09">
</circle>
<circle class="cls-1" cx="64.79" cy="13.09" r="12.09">
</circle>
<circle class="cls-1" cx="116.49" cy="13.09" r="12.09">
</circle>
</g>
</g>
</svg>
Note, since Chrome favor CSS/Web animations over SMIL, the future of SMIL might be somewhat unpredictable, so I would recommend to wait using it until its future is more secured.
According to the SVG and SMIL specifications durations are not allowed to start with a full stop. Adding a leading 0 as the specification demands so that .7 becomes 0.7 fixes things in Firefox.
I've also added a background rect as white on white does not show up too well in a snippet.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 129.57 26.18">
<defs>
<style>.cls-1{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:2px;}</style>
</defs>
<title>kropeczki</title>
<g id="Warstwa_2" data-name="Warstwa 2">
<rect width="100%" height="100%" fill="black"/>
<g id="Layer_1" data-name="Layer 1">
<circle class="cls-1" cx="13.09" cy="13.09" r="12.09">
<animate
attributeName="fill" from="none" to="#fff" begin="0.7" dur="0.1s" fill="freeze" repeatCount="1"/>
</circle>
<circle class="cls-1" cx="64.79" cy="13.09" r="12.09">
<animate
attributeName="fill" from="none" to="#fff" begin="1" dur="0.1s" fill="freeze" repeatCount="1"/>
</circle>
<circle class="cls-1" cx="116.49" cy="13.09" r="12.09">
<animate
attributeName="fill" from="none" to="#fff" begin="1.3" dur="0.1s" fill="freeze" repeatCount="1"/>
</circle>
</g>
</g>
</svg>

Chaining Multiple CSS Animations on SVG in Infinite Loop

I have two animated svg's, with two separate animations. I would like to chain them (and maybe more in the future) — infinite on one element. I would prefer CSS only.
I have tried to chain them like this question Chaining Multiple CSS Animations, but it seems that it is harder with the infinite loop — or there might be something wrong with my #keyframes (too simple).
The code can be found here: https://codepen.io/Miet/pen/bWWONo
The HTML:
<?xml version="1.0" encoding="utf-8"?>
<div class="svg-container">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 35 22" style="enable-background:new 0 0 32.4 21.7;" xml:space="preserve">
<g>
<path class="st0" d="M2.5,13.2c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4C-0.1,12.1,1.1,13.2,2.5,13.2"
/>
<path class="st0" d="M29.9,13.2c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4
C27.3,12.1,28.4,13.2,29.9,13.2"/>
<path class="st0" d="M8,7.2c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4C5.4,6.2,6.5,7.2,8,7.2"/>
<path class="st0" d="M24.4,7.2c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4C21.8,6.2,23,7.2,24.4,7.2"/>
<path class="st0" d="M16.2,21.6c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4
C13.6,20.5,14.8,21.6,16.2,21.6"/>
<path class="st0" d="M16.2,4.9c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4C13.6,3.8,14.8,4.9,16.2,4.9"/>
</g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="0" y1="10.853" x2="32.3588" y2="10.853">
<stop offset="0.2597" style="stop-color:#EE3251"/>
<stop offset="1" style="stop-color:#F47529"/>
</linearGradient>
<polyline class="st1" points="16.2,2.5 24.4,4.9 2.5,10.9 8.1,4.8 16.2,19.2 30.1,10.8 "/>
</svg>
</div>
<div class="svg-container">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 35 22" style="enable-background:new 0 0 32.4 21.7;" xml:space="preserve">
<g>
<path class="st0" d="M2.5,13.2c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4C-0.1,12.1,1.1,13.2,2.5,13.2"
/>
<path class="st0" d="M29.9,13.2c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4
C27.3,12.1,28.4,13.2,29.9,13.2"/>
<path class="st0" d="M8,7.2c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4C5.4,6.2,6.5,7.2,8,7.2"/>
<path class="st0" d="M24.4,7.2c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4C21.8,6.2,23,7.2,24.4,7.2"/>
<path class="st0" d="M16.2,21.6c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4
C13.6,20.5,14.8,21.6,16.2,21.6"/>
<path class="st0" d="M16.2,4.9c1.4,0,2.6-1.1,2.6-2.4c0-1.3-1.1-2.4-2.6-2.4c-1.4,0-2.6,1.1-2.6,2.4C13.6,3.8,14.8,4.9,16.2,4.9"/>
</g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="0" y1="10.853" x2="32.3588" y2="10.853">
<stop offset="0.2597" style="stop-color:#EE3251"/>
<stop offset="1" style="stop-color:#F47529"/>
</linearGradient>
<polyline class="st2" points="16.2,2.5 24.4,4.9 2.5,10.9 8.1,4.8 16.2,19.2 30.1,10.8 "/>
</svg>
</div>
The CSS:
svg {
width: 20em;
display: block;
margin: 5em auto;
padding: 1rem;
}
.svg-container {
width: 49%;
display: inline-block;
min-width: 21em;
}
g {
cursor: pointer;
}
.st0 {
fill:#EE3251;
}
.st1,
.st2 {
stroke-dasharray: 60;
fill: none;
stroke: url(#SVGID_1_);
stroke-width: 5;
stroke-linecap: round;
stroke-linejoin: round;
stroke-miterlimit: 10;
}
.st1 {
animation: dash 4s infinite ease-in-out alternate;
}
.st2 {
animation: dashLong 2500ms infinite linear;
}
#keyframes dash {
from {
stroke-dashoffset: 200;
}
}
#keyframes dashLong {
from {
stroke-dashoffset: 120;
}
}

SVG Animation Explanation

I am having trouble figuring out why this svg animation from codepen works. For the animation that moves the sprinkles left to right, it keeps setting the animation back to the original state. The question I have here is why does the translateX property only go to 154.5px.
I forked this from a codepen I saw by the way. Anyway, I am completely confused how they came up with this number. What math is needed to get this number?
body {
background-color: #000;
}
.center {
text-align: center;
}
#Circle{
display:none
}
#keyframes bottommotion {
0% {transform: rotate(0deg)}
14% {transform: rotate(10deg)}
29% {transform: rotate(-10deg)}
45% {transform: rotate(0deg)}
55% {transform: translate(0px, 38px)}
88% {transform: translate(0px, 0px)}
}
#Bottom {
transform-origin: 50% 50%;
animation-timing-function: cubic;
animation-name: bottommotion;
animation-duration: 2.5s;
animation-iteration-count: infinite;
}
#keyframes topmotion {
0% {transform: rotate(0deg)}
23% {transform: rotate(10deg)}
38% {transform: rotate(-10deg)}
45% {transform: rotate(0deg)}
55% {transform: translate(0px, -54px)}
100% {transform: translate(0px, 0px)}
}
#Top {
transform-origin: 50% 50%;
animation-timing-function: cubic;
animation-name: topmotion;
animation-duration: 2.5s;
animation-iteration-count: infinite;
}
#keyframes spotmotion {
0% {transform: translate(0px,0px)}
100% {transform: translate(154.5px,0px)}
}
#Spots {
transform-origin: 50% 50%;
animation-timing-function: linear;
animation-name: spotmotion;
animation-duration: .23s;
animation-iteration-count: infinite;
}
#keyframes shadowmotion {
0% {opacity:0.75; transform:translate(0px, 0px)}
45% {opacity:0.75; transform:translate(0px, 0px)}
55% {opacity:0.95; transform:translate(0px, -6px)}
95% {opacity:0.75; transform:translate(0px, 0px)}
100% {opacity:0.75; transform:translate(0px, 0px)}
}
#Shadow {
transform-origin: 50% 50%;
animation-timing-function: cubic;
animation-name: shadowmotion;
animation-duration: 2.5s;
animation-iteration-count: infinite;
}
<div class="center"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="505.821px" height="325.822px" viewBox="0 0 505.821 325.822" enable-background="new 0 0 505.821 325.822"
xml:space="preserve">
<g id="Background">
<rect width="505.821" height="325.822"/>
</g>
<g id="Spots">
<g>
<path fill="#00192a" d="M-146.92,271.615h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C-143.521,273.137-145.042,271.615-146.92,271.615z"/>
<path fill="#00192a" d="M9.08,271.615h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4H9.08
c1.878,0,3.399-1.521,3.399-3.4C12.479,273.137,10.958,271.615,9.08,271.615z"/>
<path fill="#00192a" d="M165.08,271.615H95.505c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C168.479,273.137,166.958,271.615,165.08,271.615z"/>
<path fill="#00192a" d="M321.08,271.615h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C324.479,273.137,322.958,271.615,321.08,271.615z"/>
<path fill="#00192a" d="M477.08,271.615h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C480.479,273.137,478.958,271.615,477.08,271.615z"/>
<path fill="#00192a" d="M633.08,271.615h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C636.479,273.137,634.958,271.615,633.08,271.615z"/>
<path fill="#00192a" d="M789.08,271.615h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C792.479,273.137,790.958,271.615,789.08,271.615z"/>
</g>
<g>
<path fill="#00192a" d="M-195.406,198.945h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C-192.006,200.467-193.528,198.945-195.406,198.945z"/>
<path fill="#00192a" d="M-39.406,198.945h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C-36.006,200.467-37.528,198.945-39.406,198.945z"/>
<path fill="#00192a" d="M116.594,198.945H47.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C119.994,200.467,118.472,198.945,116.594,198.945z"/>
<path fill="#00192a" d="M272.594,198.945H203.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C275.994,200.467,274.472,198.945,272.594,198.945z"/>
<path fill="#00192a" d="M428.594,198.945H359.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C431.994,200.467,430.472,198.945,428.594,198.945z"/>
<path fill="#00192a" d="M584.594,198.945H515.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C587.994,200.467,586.472,198.945,584.594,198.945z"/>
<path fill="#00192a" d="M740.594,198.945H671.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C743.994,200.467,742.472,198.945,740.594,198.945z"/>
</g>
<g>
<path fill="#00192a" d="M-146.92,120.026h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C-143.521,121.549-145.042,120.026-146.92,120.026z"/>
<path fill="#00192a" d="M9.08,120.026h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4H9.08
c1.878,0,3.399-1.521,3.399-3.4C12.479,121.549,10.958,120.026,9.08,120.026z"/>
<path fill="#00192a" d="M165.08,120.026H95.505c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C168.479,121.549,166.958,120.026,165.08,120.026z"/>
<path fill="#00192a" d="M321.08,120.026h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C324.479,121.549,322.958,120.026,321.08,120.026z"/>
<path fill="#00192a" d="M477.08,120.026h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C480.479,121.549,478.958,120.026,477.08,120.026z"/>
<path fill="#00192a" d="M633.08,120.026h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C636.479,121.549,634.958,120.026,633.08,120.026z"/>
<path fill="#00192a" d="M789.08,120.026h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C792.479,121.549,790.958,120.026,789.08,120.026z"/>
</g>
<g>
<path fill="#00192a" d="M-195.406,52.356h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C-192.006,53.879-193.528,52.356-195.406,52.356z"/>
<path fill="#00192a" d="M-39.406,52.356h-69.574c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C-36.006,53.879-37.528,52.356-39.406,52.356z"/>
<path fill="#00192a" d="M116.594,52.356H47.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C119.994,53.879,118.472,52.356,116.594,52.356z"/>
<path fill="#00192a" d="M272.594,52.356H203.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C275.994,53.879,274.472,52.356,272.594,52.356z"/>
<path fill="#00192a" d="M428.594,52.356H359.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C431.994,53.879,430.472,52.356,428.594,52.356z"/>
<path fill="#00192a" d="M584.594,52.356H515.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C587.994,53.879,586.472,52.356,584.594,52.356z"/>
<path fill="#00192a" d="M740.594,52.356H671.02c-1.877,0-3.4,1.522-3.4,3.399c0,1.879,1.523,3.4,3.4,3.4h69.574
c1.878,0,3.399-1.521,3.399-3.4C743.994,53.879,742.472,52.356,740.594,52.356z"/>
</g>
<g opacity="0.86">
<path fill="#0090A5" d="M-205.688,16.326h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-204.437,16.326-205.688,16.326z"/>
<path fill="#0090A5" d="M-49.688,16.326h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-48.437,16.326-49.688,16.326z"/>
<path fill="#0090A5" d="M106.312,16.326h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S107.563,16.326,106.312,16.326z"/>
<path fill="#0090A5" d="M262.311,16.326h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S263.563,16.326,262.311,16.326z"/>
<path fill="#0090A5" d="M418.311,16.326h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S419.563,16.326,418.311,16.326z"/>
<path fill="#0090A5" d="M574.311,16.326h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S575.563,16.326,574.311,16.326z"/>
<path fill="#0090A5" d="M730.311,16.326h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S731.563,16.326,730.311,16.326z"/>
</g>
<g opacity="0.86">
<path fill="#0090A5" d="M-278.269,85.058h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-277.017,85.058-278.269,85.058z"/>
<path fill="#0090A5" d="M-122.269,85.058h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-121.017,85.058-122.269,85.058z"/>
<path fill="#0090A5" d="M33.731,85.058h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S34.983,85.058,33.731,85.058z"/>
<path fill="#0090A5" d="M189.731,85.058h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S190.983,85.058,189.731,85.058z"/>
<path fill="#0090A5" d="M345.731,85.058h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S346.983,85.058,345.731,85.058z"/>
<path fill="#0090A5" d="M501.731,85.058h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S502.983,85.058,501.731,85.058z"/>
<path fill="#0090A5" d="M657.731,85.058h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S658.983,85.058,657.731,85.058z"/>
</g>
<g opacity="0.86">
<path fill="#0090A5" d="M-205.688,159.152h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-204.437,159.152-205.688,159.152z"/>
<path fill="#0090A5" d="M-49.688,159.152h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-48.437,159.152-49.688,159.152z"/>
<path fill="#0090A5" d="M106.312,159.152h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S107.563,159.152,106.312,159.152z"/>
<path fill="#0090A5" d="M262.311,159.152h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S263.563,159.152,262.311,159.152z"/>
<path fill="#0090A5" d="M418.311,159.152h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S419.563,159.152,418.311,159.152z"/>
<path fill="#0090A5" d="M574.311,159.152h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S575.563,159.152,574.311,159.152z"/>
<path fill="#0090A5" d="M730.311,159.152h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S731.563,159.152,730.311,159.152z"/>
</g>
<g opacity="0.86">
<path fill="#0090A5" d="M-205.688,301.978h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-204.437,301.978-205.688,301.978z"/>
<path fill="#0090A5" d="M-49.688,301.978h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-48.437,301.978-49.688,301.978z"/>
<path fill="#0090A5" d="M106.312,301.978h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S107.563,301.978,106.312,301.978z"/>
<path fill="#0090A5" d="M262.311,301.978h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S263.563,301.978,262.311,301.978z"/>
<path fill="#0090A5" d="M418.311,301.978h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S419.563,301.978,418.311,301.978z"/>
<path fill="#0090A5" d="M574.311,301.978h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S575.563,301.978,574.311,301.978z"/>
<path fill="#0090A5" d="M730.311,301.978h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S731.563,301.978,730.311,301.978z"/>
</g>
<g opacity="0.86">
<path fill="#0090A5" d="M-278.269,227.884h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-277.017,227.884-278.269,227.884z"/>
<path fill="#0090A5" d="M-122.269,227.884h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S-121.017,227.884-122.269,227.884z"/>
<path fill="#0090A5" d="M33.731,227.884h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.267-1.015,2.267-2.267S34.983,227.884,33.731,227.884z"/>
<path fill="#0090A5" d="M189.731,227.884h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.015,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S190.983,227.884,189.731,227.884z"/>
<path fill="#0090A5" d="M345.731,227.884h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S346.983,227.884,345.731,227.884z"/>
<path fill="#0090A5" d="M501.731,227.884h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S502.983,227.884,501.731,227.884z"/>
<path fill="#0090A5" d="M657.731,227.884h-24.8c-1.251,0-2.267,1.015-2.267,2.267s1.016,2.267,2.267,2.267h24.8
c1.252,0,2.268-1.015,2.268-2.267S658.983,227.884,657.731,227.884z"/>
</g>
</g>
<g id="Shadow">
<ellipse fill="#00243C" cx="252.403" cy="291.789" rx="68" ry="20"/>
</g>
<g id="Bottom">
<g>
<g>
<path fill="#60C29E" d="M177.332,156.984c0.001,50.103,33.611,90.72,75.071,90.72s75.068-40.617,75.069-90.72H177.332z"/>
<path fill="#87C65F" d="M252.402,156.984v90.72c0.001,0,0.001,0,0.001,0c41.46,0,75.068-40.617,75.069-90.72H252.402z"/>
<path fill="#38A479" d="M304.012,156.984H200.789c0,50.101,23.11,90.718,51.611,90.72c0,0,0.002,0,0.003,0
C280.91,247.703,304.012,207.087,304.012,156.984z"/>
<path fill="#32B44E" d="M252.401,156.984v90.72c0.001,0,0.001,0,0.002,0c28.507-0.002,51.609-40.617,51.609-90.72H252.401z"/>
<path fill="#00904C" d="M271.169,156.984h-37.536c0,50.103,8.404,90.718,18.769,90.72l0,0
C262.768,247.703,271.169,207.087,271.169,156.984z"/>
<ellipse fill="#006744" cx="252.403" cy="156.984" rx="75.071" ry="18.144"/>
<ellipse fill="#F69077" cx="252.403" cy="156.984" rx="60.808" ry="14.697"/>
<ellipse fill="#EF413C" cx="252.403" cy="156.984" rx="53.774" ry="12.996"/>
<path d="M217.479,156.382c2.512,2.117,2.337,6.792,2.299,6.825c-0.033,0.031-5.408,0.331-7.918-1.787
c-2.511-2.117-3.289-4.96-1.736-6.353C211.677,153.676,214.967,154.264,217.479,156.382z"/>
<path d="M237.369,154.375c1.364,2.8-0.894,7.048-0.942,7.066c-0.047,0.017-5.126-1.529-6.491-4.329
c-1.363-2.8-0.805-5.684,1.249-6.439C233.237,149.917,236.004,151.575,237.369,154.375z"/>
<path d="M257.023,154.546c0,3.04-3.982,6.188-4.036,6.186c-0.05,0-4.036-3.146-4.036-6.186c0-3.041,1.808-5.507,4.036-5.508
C255.216,149.04,257.023,151.504,257.023,154.546z"/>
<path d="M276.065,156.733c-1.363,2.8-6.441,4.348-6.489,4.329c-0.047-0.018-2.309-4.266-0.947-7.064
c1.366-2.802,4.135-4.459,6.188-3.704C276.869,151.049,277.427,153.931,276.065,156.733z"/>
<path d="M294.224,160.676c-2.509,2.117-7.88,1.819-7.916,1.786c-0.035-0.03-0.213-4.709,2.296-6.826
c2.513-2.116,5.808-2.704,7.358-1.312C297.515,155.715,296.737,158.56,294.224,160.676z"/>
</g>
<!-- <circle opacity="0" fill="#00A654" cx="252.402" cy="156.984" r="90.696"/> -->
</g>
</g>
<g id="Top">
<g>
<g>
<path fill="#60C29E" d="M252.403,175.152c41.46,0,75.069-8.123,75.069-18.144c0,0,0,0,0-0.001
c0-50.104-33.609-90.719-75.069-90.719s-75.071,40.615-75.071,90.719c0,0,0,0.001,0,0.001
C177.332,167.029,210.943,175.152,252.403,175.152z"/>
<path fill="#38A479" d="M252.403,175.152c19.724,0,37.659-1.841,51.058-4.848c0.361-4.34,0.552-8.779,0.552-13.297
c0-50.104-23.103-90.719-51.61-90.719c-28.502,0-51.613,40.615-51.613,90.719c0,4.518,0.191,8.956,0.554,13.297
C214.74,173.311,232.678,175.152,252.403,175.152z"/>
<path opacity="0.62" fill="#00A654" d="M252.403,175.152c6.354,0,12.52-0.192,18.413-0.551c0.23-5.692,0.354-11.574,0.354-17.594
c0-50.104-8.401-90.719-18.768-90.719c-10.364,0-18.769,40.615-18.769,90.719c0,6.02,0.123,11.9,0.354,17.594
C239.88,174.959,246.048,175.152,252.403,175.152z"/>
<path fill="#87C65F" d="M257.023,66.464v108.65c39.306-0.577,70.449-8.461,70.449-18.106c0,0,0,0,0-0.001
C327.472,108.779,296.33,69.349,257.023,66.464z"/>
<path fill="#32B44E" d="M252.403,175.152c19.724,0,37.659-1.841,51.058-4.848c0.361-4.34,0.552-8.779,0.552-13.297
c0-50.104-23.103-90.719-51.61-90.719L252.403,175.152C252.403,175.152,252.403,175.152,252.403,175.152z"/>
<path fill="#00904C" d="M252.403,175.152c6.354,0,12.52-0.192,18.413-0.551c0.23-5.692,0.354-11.574,0.354-17.594
c0-50.104-8.401-90.719-18.768-90.719c-10.364,0-18.769,40.615-18.769,90.719c0,6.02,0.123,11.9,0.354,17.594
C239.88,174.959,246.048,175.152,252.403,175.152z"/>
</g>
<!-- <circle opacity="0" fill="#00A654" cx="252.402" cy="156.984" r="90.696"/> -->
</g>
</g>
</svg>
</div>
http://codepen.io/Jesders88/pen/mOXVRK
If you look at the coordinates of the spots, or their bounding boxes, you can see that the horizontal distance between them is 156.
Why did the author go with 154.5 instead? Who knows. It may have been a mistake. More likely it was because they thought it looked better. If you used 156, you might get stuttering due to duplicate frames at the 0 and 156 offsets.
Try changing it to 156 and see whether you think it looks worse or not.

Resources