Cube rotation 3

by Simon Hi

HTML

<div id="axis"></div>
<div id="cube">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
</div>

CSS

:root {
  --size: 50vmin;
  --ax: 1;
  --ay: 1;
  --az: 3;
  --theta: 45deg;
  --r: rotate3d(var(--ax), var(--ay), var(--az), var(--theta));
}

body {
  display: flex;
  height: 100vh;
  margin: 0;
  padding: 0;
}

#axis {
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  height: 0;
  border: 1px solid #ccc;
  transform-style: preserve-3d;
  transform: var(--r);
}

#cube {
  margin: auto;
  position: relative;
  width: var(--size);
  height: var(--size);
  transform-style: preserve-3d;
}

#cube>div {
  position: absolute;
  width: calc(var(--size) / 2);
  height: calc(var(--size) / 2);
  opacity: 0.9;
  font-size: calc(var(--size) / 2);
  text-align: center;
}

#cube>div:nth-of-type(1) {
  transform: translateX(0px) translateY(0px) translateZ(calc(var(--size) / 2));
  background-color: #ff0;
}

#cube>div:nth-of-type(2) {
  transform: rotateX(90deg) translateX(0px) translateY(calc(var(--size) / 4)) translateZ(calc(var(--size) / 4));
  background-color: #f0f;
}

#cube>div:nth-of-type(3) {
  transform: rotateY(90deg) translateX(calc(var(--size) / (-4))) translateY(0px) translateZ(calc(var(--size) / 4));
  background-color: #0ff;
}

#cube>div:nth-of-type(4) {
  transform: rotateY(-90deg) translateX(calc(var(--size) / 4)) translateY(0px) translateZ(calc(var(--size) / 4));
  background-color: #f00;
}

#cube>div:nth-of-type(5) {
  transform: rotateX(-90deg) translateX(0px) translateY(calc(var(--size) / (-4))) translateZ(calc(var(--size) / 4));
  background-color: #0f0;
}

#cube>div:nth-of-type(6) {
  transform: translateX(0px) translateY(0) translateZ(0);
  background-color: #00f;
}

#cube {
  animation: ro 10s linear infinite;
}

@keyframes ro {
  0% {
    transform: var(--r) rotate3d(1, 0, 0, 0deg);
  }
  25% {
    transform: var(--r) rotate3d(1, 0, 0, 30deg);
  }
  50% {
    transform: var(--r) rotate3d(0, 0.866, 0.5, 30deg) rotate3d(1, 0, 0, 30deg);
  }
  75% {
    transform: var(--r) rotate3d(1, 0, 0, 30deg);
  }
  100% {
    transform: var(--r)...