Personally, I would get rid of these extra classes and use : nth-child pseudo- class. Having each child with its own offset (for example: top:150px; left:135px; ) would mean that you would have to recalculate the positioning every time you change the image, so I deleted them and found a different way of positioning.
I used different images as they encountered the wrong direction. To do this, the arrow should be facing the start of rotation, in this case 0 0 or top left.
To condense the answer, I removed all the vendor prefixes and attenuation in the transitions.
#windmill { animation: spin-clockwise 2s linear 1200ms infinite; transform-origin: 0 0; position: relative; top: 100px; left: 100px; } #windmill > * { position: absolute; transform-origin: 0 0; } #windmill > *:nth-child(1) {transform: rotate(0deg);} #windmill > *:nth-child(2) {transform: rotate(120deg);} #windmill > *:nth-child(3) {transform: rotate(240deg);} @keyframes spin-clockwise { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
<div id="windmill"> <img src="https://upload.wikimedia.org/wikipedia/commons/f/f4/Arrow_Blue_UpperLeft_001.svg" /> <img src="https://upload.wikimedia.org/wikipedia/commons/f/f4/Arrow_Blue_UpperLeft_001.svg" /> <img src="https://upload.wikimedia.org/wikipedia/commons/f/f4/Arrow_Blue_UpperLeft_001.svg" /> </div>
source share