Javascript loop selects the class1, class2, classN… and animates them in circle. speed can be adjusted.
See the Pen Untitled by sinanisler (@sinanisler) on CodePen.
function animateDivsInCircle() {
// Step 1: Get all elements by class name and their initial positions
let elements = [];
let initialPositions = [];
for (let i = 1; i <= 19; i++) {
let el = document.getElementsByClassName(`class${i}`);
for (let j = 0; j < el.length; j++) {
elements.push(el[j]);
let rect = el[j].getBoundingClientRect();
initialPositions.push({
x: rect.left + rect.width / 2,
y: rect.top + rect.height / 2
});
}
}
// Step 2: Animate elements in a circle relative to their initial positions
let angle = 0;
const radius = 50; // Adjust radius as needed
const speed = 0.02; // Adjust for faster or slower animation
function animate() {
for (let i = 0; i < elements.length; i++) {
let currentAngle = angle + (2 * Math.PI / elements.length) * i;
let x = initialPositions[i].x + radius * Math.cos(currentAngle) - initialPositions[i].x;
let y = initialPositions[i].y + radius * Math.sin(currentAngle) - initialPositions[i].y;
elements[i].style.transform = `translate(${x}px, ${y}px)`;
}
angle += speed;
requestAnimationFrame(animate);
}
animate();
}
// Call the function after DOM has loaded
document.addEventListener("DOMContentLoaded", animateDivsInCircle);