216 lines
3.2 KiB
SCSS
216 lines
3.2 KiB
SCSS
$setup-time-normal: 80s / 24; /* 24 frames / sec; the initial sequence is 80 frames */
|
|
$setup-time-halloween: 323s / 24;
|
|
$loop-time-halloween: 25s / 24;
|
|
|
|
#loader-overlay {
|
|
position: absolute;
|
|
overflow: hidden;
|
|
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
|
|
background: #1e1e1e;
|
|
|
|
user-select: none;
|
|
|
|
z-index: 10000000;
|
|
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
|
|
-webkit-app-region: drag;
|
|
|
|
.container {
|
|
flex-shrink: 0;
|
|
|
|
display: block;
|
|
position: relative;
|
|
|
|
width: 1000px;
|
|
height: 1000px;
|
|
|
|
align-self: center;
|
|
margin-bottom: 10vh;
|
|
|
|
transition-duration: .5s;
|
|
|
|
img {
|
|
user-select: none;
|
|
}
|
|
}
|
|
|
|
.setup, .idle {
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
|
|
display: none;
|
|
|
|
&.visible {
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
.setup.visible {
|
|
&.normal {
|
|
animation: loader-initial-sequence 0s cubic-bezier(.81,.01,.65,1.16) $setup-time-normal forwards;
|
|
}
|
|
|
|
&.halloween {
|
|
animation: loader-initial-sequence 0s cubic-bezier(.81,.01,.65,1.16) $setup-time-halloween forwards;
|
|
}
|
|
}
|
|
|
|
.idle.animation-normal {
|
|
img {
|
|
position: absolute;
|
|
}
|
|
|
|
.steam {
|
|
position: absolute;
|
|
|
|
top: 282px;
|
|
left: 380px;
|
|
|
|
width: 249px;
|
|
height: 125px;
|
|
background: url("img/loader/steam.png") 0 0, url("../img/loader/steam.png") 0 0;
|
|
|
|
animation: sprite-steam 2.5s steps(50) forwards infinite;
|
|
}
|
|
}
|
|
|
|
&.finishing {
|
|
.idle {
|
|
.steam {
|
|
display: none;
|
|
}
|
|
|
|
.bowl {
|
|
animation: swipe-out-bowl .5s both;
|
|
}
|
|
|
|
.text {
|
|
animation: swipe-out-text .5s .12s both;
|
|
}
|
|
}
|
|
|
|
pointer-events: none;
|
|
animation: overlay-fade .3s .2s both;
|
|
}
|
|
|
|
.loader-stage {
|
|
position: absolute;
|
|
|
|
left: 5px;
|
|
bottom: 5px;
|
|
|
|
font-size: 12px;
|
|
font-family: monospace;
|
|
|
|
color: #999;
|
|
}
|
|
}
|
|
|
|
@media all and (max-width: 850px) {
|
|
#loader-overlay .container {
|
|
transform: scale(.5);
|
|
}
|
|
}
|
|
|
|
@media all and (max-height: 700px) {
|
|
#loader-overlay .container {
|
|
transform: scale(.5);
|
|
}
|
|
}
|
|
|
|
@media all and (max-width: 400px) {
|
|
#loader-overlay .container {
|
|
transform: scale(.3);
|
|
}
|
|
}
|
|
|
|
@keyframes loader-initial-sequence {
|
|
to {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
@keyframes sprite-steam {
|
|
to {
|
|
background-position: 0 -6250px;
|
|
}
|
|
}
|
|
|
|
@keyframes swipe-out-bowl {
|
|
from {
|
|
transform: translate3d(0, 0, 0);
|
|
}
|
|
|
|
40% {
|
|
opacity: 1;
|
|
transform: translate3d(-60px, 0, 0) skew(-5deg, 0) rotateY(-6deg);
|
|
}
|
|
|
|
to {
|
|
opacity: 0;
|
|
transform: translate3d(700px, 0, 0) skew(30deg, 0) rotateZ(-6deg);
|
|
}
|
|
}
|
|
|
|
@keyframes swipe-out-text {
|
|
from {
|
|
transform: translate3d(0, 0, 0);
|
|
}
|
|
|
|
40% {
|
|
opacity: 1;
|
|
transform: translate3d(-30px, 20px, 0) skew(-5deg, 0);
|
|
}
|
|
|
|
to {
|
|
opacity: 0;
|
|
transform: translate3d(550px, 0, 0) skew(30deg, 0) scale(.96, 1.25) rotateZ(6deg);
|
|
}
|
|
}
|
|
|
|
@keyframes animation-nothing {
|
|
to {
|
|
background-position: 0 -6250px;
|
|
}
|
|
}
|
|
|
|
@keyframes overlay-fade {
|
|
to {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
/* Automated loader timeout */
|
|
#loader-overlay:not(.initialized) + #critical-load:not(.shown) {
|
|
display: block !important;
|
|
opacity: 0;
|
|
|
|
animation: loader-setup-timeout 0s ease-in $setup-time-normal forwards;
|
|
|
|
.error::before {
|
|
content: 'Failed to startup loader!';
|
|
}
|
|
|
|
.detail::before {
|
|
content: 'Lookup the console for more details';
|
|
}
|
|
}
|
|
|
|
|
|
@keyframes loader-setup-timeout {
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
} |