Hay 2 maneras de mover un contenedor div en una trayectoria circular con CSS:
1) Animación de la CSS transformar la propiedad:
El elemento que ha de ser girado debe tener un elemento padre. Ahora, si desea mover al niño 60 grados, primero gire el elemento principal 60 grados y luego gire el niño 60 grados (un ángulo opuesto para que el niño no se vea invertido).
Utilice transición de CSS, animación CSS o API de animaciones web para realizar la animación.
Sobre el siguiente código:
La matriz tiene un posicionamiento relativo. También hágala circular dando la misma altura, ancho, radio de borde = 50%
El niño tiene posición absoluta. Se le ha dado una altura de & ancho, arriba & propiedades a la izquierda para que aparezca en la mitad superior del elemento principal.
#parent {
position: relative;
width: 300px;
height: 300px;
border: 1px solid rgba(0,0,0,0.1);
border-radius: 50%;
transform: rotate(0deg);
transition: transform 0.7s linear;
}
#child {
position: absolute;
width: 80px;
height: 80px;
transform: rotate(0deg);
transition: transform 0.7s linear;
top: -40px;
left: 110px;
border: 1px solid black;
}
$("#button").on('click', function() {
$("#parent").css({ transform: 'rotate(60deg)' });
$("#child").css({ transform: 'rotate(-60deg)' });
});
http://usefulangle.com/post/32/moving-an-element-in-circular-path-with-css es una publicación de blog que escribí. También contiene una demostración.
2) Animación de la propiedad CSS-offset de posición:
Con la nueva trayectoria de movimiento CSS o Ruta de desvío, es posible animar un elemento largo de cualquier camino.Sin embargo, a partir de ahora (enero de 2017) solo funcionará en la última versión de Chrome.
Debe definir una ruta SVG circular con la propiedad offset-path. A continuación, anime la propiedad distancia-desplazamiento sobre esta ruta usando transición CSS, animación CSS o API de Web Animations.
Además de definir una ruta SVG, puede proporcionar el conjunto offset-path: margin-box. Esto definirá la ruta como el límite de margen del padre. Si el padre se ha hecho circular con radio de borde, la ruta también será circular.
#child {
offset-path: margin-box;
}
Ver http://usefulangle.com/post/33/moving-element-in-circular-path-with-css-offset-path para la entrada del blog relacionadas con la negociación de animación circular con trayectoria de movimiento.
Sandeep +1 para esto, pero no está funcionando en firefox cómo se puede lograr el mismo resultado en firefox .... –
+1 para CSS3! Nota: Esto es solo para navegadores Webkit. –
revise mi violín actualizado que es el trabajo en firefox también – sandeep