codepens/bind-css-keyframe-animation.../dist/style.css

92 lines
1.8 KiB
CSS
Raw Permalink Normal View History

2023-10-06 23:12:53 +02:00
body {
padding: 0;
margin: 0;
min-height: 500vh;
background-color: rgb(139, 201, 228);
animation: body 1s linear;
}
@keyframes body {
to {
background-color: rgb(19, 48, 97);
}
}
.progress {
height: 3px;
width: 0%;
background-color: #fff;
position: fixed;
top: 0;
left: 0;
animation: progress 1s linear;
}
@keyframes progress {
to {
background-color: rgb(20, 255, 226);
width: 100%;
}
}
.cube-wrap {
--size: 30vmin;
position: fixed;
top: 50%;
left: 50%;
width: 0;
height: 0;
perspective: 100vmin;
}
.cube {
transform-style: preserve-3d;
transform: rotateX(0deg) rotateZ(45deg) rotateY(-45deg);
animation: cube 1s linear;
}
@keyframes cube {
to {
transform: rotateX(360deg) rotateZ(45deg) rotateY(-45deg);
}
}
.side {
position: absolute;
width: var(--size);
height: var(--size);
background-color: #eee;
backface-visibility: visible;
top: calc(var(--size) * -.5);
left: calc(var(--size) * -.5);
}
.top {
background-color: #fff;
transform: rotateX(90deg) translateZ(calc(var(--size) * .5));
}
.bottom {
background-color: #999;
transform: rotateX(90deg) translateZ(calc(var(--size) * -.5));
}
.left {
background-color: #ccc;
transform: rotateY(90deg) translateZ(calc(var(--size) * .5));
}
.right {
background-color: #ddd;
transform: rotateY(90deg) translateZ(calc(var(--size) * -.5));
}
.front {
background-color: #aaa;
transform: translateZ(calc(var(--size) * .5));
}
.back {
background-color: #bbb;
transform: translateZ(calc(var(--size) * -.5));
}
:root * {
/* Pause the animation */
animation-play-state: paused;
/* Bind the animation to scroll */
animation-delay: calc(var(--scroll) * -1s);
/* These last 2 properites clean up overshoot weirdness */
animation-iteration-count: 1;
animation-fill-mode: both;
}