Чтобы точка двигалась по овалу, эллипсу или произвольной кривой с помощью CSS, можно использовать анимации на основе @keyframes и свойства transform
<div class="container">
<div class="dot"></div>
</div>
.container {
position: relative;
width: 200px;
height: 100px;
border: 1px dashed gray;
border-radius: 50%; /* Делает контейнер эллиптическим */
overflow: hidden;
}
.dot {
position: absolute;
top: 50%;
left: 50%;
width: 10px;
height: 10px;
background: red;
border-radius: 50%;
transform: translate(-50%, -50%);
animation: moveInEllipse 4s linear infinite;
}
@keyframes moveInEllipse {
0% {
transform: translate(-50%, -50%) translateX(100px) rotate(0deg);
}
25% {
transform: translate(-50%, -50%) translateX(100px) rotate(90deg);
}
50% {
transform: translate(-50%, -50%) translateX(100px) rotate(180deg);
}
75% {
transform: translate(-50%, -50%) translateX(100px) rotate(270deg);
}
100% {
transform: translate(-50%, -50%) translateX(100px) rotate(360deg);
}
}
В этом примере точка движется по эллипсу благодаря изменению свойств translate и rotate