Cube rotation 2
by Simon Hi
HTML
<div id="axis"></div>
<div id="cube">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
CSS
:root {
--size: 40vmin;
--ax: 1;
--ay: 1;
--az: 3;
--theta: 45deg;
}
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: rotate3d(var(--ax), var(--ay), var(--az), var(--theta));
}
#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.75;
}
#cube>div:nth-of-type(1) {
transform: translateX(0px) translateY(0px) translateZ(calc(var(--size) / 2));
background-color: #0ff;
}
#cube>div:nth-of-type(2) {
transform: rotateX(90deg) translateX(0px) translateY(calc(var(--size) / 4)) translateZ(calc(var(--size) / 4));
background-color: #ff0;
}
#cube>div:nth-of-type(3) {
transform: rotateY(90deg) translateX(calc(var(--size) / (-4))) translateY(0px) translateZ(calc(var(--size) / 4));
background-color: #f00;
}
#cube>div:nth-of-type(4) {
transform: rotateY(-90deg) translateX(calc(var(--size) / 4)) translateY(0px) translateZ(calc(var(--size) / 4));
background-color: #f0f;
}
#cube>div:nth-of-type(5) {
transform: rotateX(-90deg) translateX(0px) translateY(calc(var(--size) / (-4))) translateZ(calc(var(--size) / 4));
background-color: #00f;
}
#cube>div:nth-of-type(6) {
transform: translateX(0px) translateY(0) translateZ(0);
background-color: #0f0;
}
#cube {
animation: ro 10s linear infinite;
}
@keyframes ro {
0% {
transform: rotate3d(var(--ax), var(--ay), var(--az), var(--theta)) rotate3d(1, 0, 0, 0deg);
}
50% {
transform: rotate3d(var(--ax), var(--ay), var(--az), var(--theta)) rotate3d(1, 0, 0, 180deg);
}
100% {
transform: rotate3d(var(--ax), var(--ay), var(--az), var(--theta)) rotate3d(1, 0, 0, 360deg);
}
}