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)...