Задать вопрос
@FavnAristotel

Как с помощью css сделать что бы точка двигалась по овалу или элипсу или вообще по какой то кривой?

6794e9e7cc760459555623.jpeg
например так ?
  • Вопрос задан
  • 73 просмотра
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
dmitryfx
@dmitryfx
Ох, ребята. Учитесь думать и читать документацию, а не тупо копировать ответ нейросети.
Помимо кода ниже, можно использовать какую-нибудь js библиотеку, вроде https://animejs.com/documentation/#motionPath

<div class="container">
  <div class="dot"></div>
</div>

.container {
  position: relative;
  width: 200px;
  height: 100px;
  border: 1px dashed gray;
  border-radius: 50%;
}

.dot {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 10px;
  height: 10px;
  background: red;
  border-radius: 50%;
  
  offset-path: ellipse( 50% 50% ); /* или указать path() с любыми точками */
  animation: moveInEllipse 4s linear infinite;
  
}


@keyframes moveInEllipse {
  0% {
    background: red;
    offset-distance: 0%;
  }
  100% {
    background: orange;
    offset-distance: 100%;
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@nlaik
Чтобы точка двигалась по овалу, эллипсу или произвольной кривой с помощью 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
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы