CSS: Как избежать прерывания поворота перехода на 360 °?

1

В настоящее время я реализую компас в JavaScript/CSS.

Глобальная реализация работает отлично.

Однако курсор компаса перемещается с толчком. Я реализовал переход ease-in-out в CSS, чтобы избежать этой проблемы.

От 0 до 359 градусов курсор поворачивается нормально против часовой стрелки (с переходом CSS).

Но если угол установлен от 356 градусов до 1 градуса, CSS-переход поворачивает курсор по часовой стрелке, поэтому с большим зазором (355 градусов вместо 5 градусов).

Это способ избежать этого пробела или другое решение для реализации хорошего перехода?

Благодарю.

  • 3
    Продолжайте увеличивать дальше 360. CSS это выяснит.
  • 0
    Я думаю, что это хороший вопрос, потому что я действительно не уверен, есть ли какое-либо влияние, позволяющее вращению увеличиваться вечно.
Показать ещё 4 комментария
Теги:

2 ответа

0

Псевдокод, вы можете просто запретить более высокие значения:

if (elem.transition >= 360){
   elem.transition = 360
} 
0

Спасибо за каждую идею.

Таким образом, с помощью CSS, решение состоит в том, чтобы продолжать увеличиваться и дальше 360, как говорит Диодей. Но в моем случае вычисленный угол масштабируется от 0 до 360 °.

С помощью JS мы можем использовать anime.js, но я предпочел кодировать свою правильную функцию анимации. Эта функция делает следующее:

  • вычислить угол по часовой стрелке между текущей позицией и пунктом назначения
  • вычислить угол против часовой стрелки между текущей позицией и пунктом назначения
  • вычислить минимальный угол между ними (это кратчайший путь)
  • Для 5 образцов, запустите Timeout 5 раз и добавьте [минимальный угол /5] к текущей позиции, чтобы достичь места назначения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню