TeaWeb/loader/css/loader.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;
}
}