Преобразование вращения с градусами в том же вращении

Я пытаюсь повернуть куб с ключевыми кадрами, чтобы он продолжал вращаться в одном направлении без вращения назад и продолжал вращаться горизонтально в одном направлении без реверса на бесконечность.

<div class = "cube">
  <div class = "cube-face front"></div>
  <div class = "cube-face back"></div>
  <div class = "cube-face right"></div>
  <div class = "cube-face left"></div>
  <div class = "cube-face top"></div>
  <div class = "cube-face bottom"></div>
</div>

Степени CSS работают более чем на 360 и, кажется, не останавливаются... Как вы можете видеть с текущими ключевыми кадрами, куб будет вращаться назад, есть ли решение, чтобы сохранить его с помощью CSS?

.cube {
  width: 250px;
  height: 250px;
  position: relative;
  transform-style: preserve-3d;
  transform: rotateX(315deg) rotateY(-45deg);
  animation: rotate-cube 5s infinite;
  margin-bottom: 50px;
  cursor: pointer;
}
.cube-face {
  display: flex;
  justify-content: center;
  align-items: center;
  position: absolute;
  width: 250px;
  height: 250px;
  border: 2px solid black;
  font-size: 90px !important;
  font-weight: bold;
  color: #000;
}
.cube .front {
  background: #f15d2a;
  transform: rotateY(0deg) translateZ(125px);
}
.cube .right {
  background: #0063a6;
  transform: rotateY(90deg) translateZ(125px);
}
.cube .back {
  background: #ed1652;
  transform: rotate(0deg) rotateY(180deg) translateZ(125px);
}
.cube .left {
  background: #12b259;
  transform: rotateX(0) rotateY(-90deg) translateZ(125px);
}
.cube .top {
  background: #fff;
  transform: rotateY(0deg) rotateX(90deg) translateZ(125px);
}
.cube .bottom {
  background: #ffd54c;
  transform: rotatey(90deg) rotateX(-90deg) translateZ(125px);
}
@keyframes rotate-cube {
  0% {
    transform: rotateX(315deg) rotateY(-45deg);
  }
  33.33% {
    transform: rotateX(315deg) rotateY(-135deg);
  }
  66.66% {
    transform: rotateX(315deg) rotateY(-225deg);
  }
  100% {
    transform: rotateX(315deg) rotateY(-45deg);
  }
}

См. пример на codepen

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
3
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что вы хотите, чтобы конец и начало имели одинаковый поворот, вы можете установить окончательный поворот на -405 градусов (360 + 45).

Это должно гарантировать, что анимация продолжится в правильном направлении.

    0% {
      transform: rotateX(315deg) rotateY(-45deg);
    }

    33.33% {
      transform: rotateX(315deg) rotateY(-135deg);
    }

    66.66% {
      transform: rotateX(315deg) rotateY(-225deg);
    }

    100% {
      transform: rotateX(315deg) rotateY(-405deg);
    }

Другие вопросы по теме