174 lines
3.9 KiB
CSS
174 lines
3.9 KiB
CSS
:root {
|
|
--side-length: 30vw;
|
|
--side-length-neg: -30vw;
|
|
--side-length-half: calc(var(--side-length) / 2);
|
|
--side-length-half-neg: calc(var(--side-length-neg) / 2);
|
|
--colour-bg-main: #d4c3a3;
|
|
--colour-bg-secondary: #4a4a4a;
|
|
--colour-primary: #f6e8d4;
|
|
--colour-text-main: #fff;
|
|
--colour-cube-1: #dd4814;
|
|
--colour-cube-2: #0497aa;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: "Montserrat";
|
|
src: url(../fonts/montserrat/Montserrat-Medium.otf) format("truetype");
|
|
}
|
|
|
|
html {
|
|
font-family: Montserrat, Verdana, Tahoma;
|
|
color: var(--colour-text-main);
|
|
background-color: var(--colour-bg-main);
|
|
font-size: 16px;
|
|
color: var(--colour-primary);
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100vh;
|
|
}
|
|
|
|
header, footer {
|
|
padding: 0 3rem;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
background-color: var(--colour-bg-secondary);
|
|
height: 4rem;
|
|
}
|
|
|
|
header {
|
|
font-size: 2rem;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
footer {
|
|
height: 2.5rem;
|
|
}
|
|
|
|
main {
|
|
flex: 1;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.wrap {
|
|
transition: opacity linear 3s;
|
|
perspective: 250vw;
|
|
perspective-origin: 500% 50vw;
|
|
width: var(--side-length);
|
|
height: var(--side-length);
|
|
}
|
|
|
|
.cube {
|
|
transform-style: preserve-3d;
|
|
width: var(--side-length);
|
|
height: var(--side-length);
|
|
animation: spin 50s infinite ease-in-out;
|
|
}
|
|
|
|
.wrap:hover {
|
|
opacity: 0.1;
|
|
}
|
|
|
|
.cube div {
|
|
position: absolute;
|
|
width: var(--side-length);
|
|
height: var(--side-length);
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
.cube div div {
|
|
opacity: 0.8;
|
|
background-color: var(--colour-bg-secondary);
|
|
width: 90%;
|
|
height: 90%;
|
|
}
|
|
.cube div div:hover {
|
|
opacity: 0.2;
|
|
}
|
|
|
|
.front div, .back div {
|
|
animation: fb 50s infinite cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
}
|
|
|
|
.left div, .right div {
|
|
animation: rl 50s infinite cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
}
|
|
|
|
.top div, .bottom div {
|
|
animation: tb 50s infinite cubic-bezier(0.165, 0.84, 0.44, 1);
|
|
}
|
|
|
|
.back {
|
|
transform: translateZ(var(--side-length-half-neg)) rotateY(180deg);
|
|
}
|
|
.right {
|
|
transform: rotateY(-270deg) translateX(var(--side-length-half));
|
|
transform-origin: top right;
|
|
}
|
|
.left {
|
|
transform: rotateY(270deg) translateX(var(--side-length-half-neg));
|
|
transform-origin: center left;
|
|
}
|
|
.top {
|
|
transform: rotateX(-90deg) translateY(var(--side-length-half-neg));
|
|
transform-origin: top center;
|
|
}
|
|
.bottom {
|
|
transform: rotateX(90deg) translateY(var(--side-length-half));
|
|
transform-origin: bottom center;
|
|
}
|
|
|
|
.front {
|
|
transform: translateZ(var(--side-length-half));
|
|
}
|
|
.cube .front div {
|
|
opacity: 0.9;
|
|
transform: translateZ(var(--side-length-half));
|
|
background-color: #a39494;
|
|
}
|
|
.cube .bottom div {
|
|
background-color: #7d7d7d;
|
|
}
|
|
|
|
@keyframes spin {
|
|
0%, 10% { transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); }
|
|
11%, 20% { transform: rotateX(0deg) rotateY(0deg) rotateZ(180deg); }
|
|
21%, 35% { transform: rotateX(90deg) rotateY(0deg) rotateZ(180deg); }
|
|
36%, 50% { transform: rotateX(90deg) rotateY(90deg) rotateZ(180deg); }
|
|
51%, 65% { transform: rotateX(90deg) rotateY(90deg) rotateZ(360deg); }
|
|
66%, 80% { transform: rotateX(180deg) rotateY(90deg) rotateZ(360deg); }
|
|
81%, 99% { transform: rotateX(180deg) rotateY(360deg) rotateZ(360deg); }
|
|
100% { transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg); }
|
|
}
|
|
|
|
@keyframes fb {
|
|
0%, 9% { border-radius: 0; }
|
|
10%, 11% { border-radius: 50% }
|
|
12%, 49% { border-radius: 0; }
|
|
50%, 51% { border-radius: 50%; }
|
|
52%, 64% { border-radius: 0; }
|
|
65%, 66% { border-radius: 50%; }
|
|
67%, 100% { border-radius: 0; }
|
|
}
|
|
|
|
@keyframes rl {
|
|
0%, 19% { border-radius: 0; }
|
|
20%, 21% { border-radius: 50%; }
|
|
22%, 98% { border-radius: 0; }
|
|
99%, 100% { border-radius: 50% }
|
|
}
|
|
|
|
@keyframes tb {
|
|
0%, 34% { border-radius: 0; }
|
|
35%, 36% { border-radius: 50%; }
|
|
37%, 79% { border-radius: 0; }
|
|
80%, 81% { border-radius: 50%; }
|
|
82%, 100% { border-radius: 0; }
|
|
}
|