You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

829 lines
15 KiB

2 years ago
.loader {
color: #fff;
position: fixed;
box-sizing: border-box;
left: -9999px;
top: -9999px;
width: 0;
height: 0;
overflow: hidden;
z-index: 999999
}
.loader:after,
.loader:before {
box-sizing: border-box;
display: none
}
.loader.is-active {
background-color: rgba(0, 0, 0, .85);
width: 100%;
height: 100%;
left: 0;
top: 0
}
.loader.is-active:after,
.loader.is-active:before {
display: block
}
@keyframes rotation {
0% {
transform: rotate(0)
}
to {
transform: rotate(359deg)
}
}
@keyframes blink {
0% {
opacity: .5
}
to {
opacity: 1
}
}
.loader[data-text]:before {
position: fixed;
left: 0;
top: 50%;
color: currentColor;
font-family: Helvetica, Arial, sans-serif;
text-align: center;
width: 100%;
font-size: 14px
}
.loader[data-text=""]:before {
content: "Loading"
}
.loader[data-text]:not([data-text=""]):before {
content: attr(data-text)
}
.loader[data-text][data-blink]:before {
animation: blink 1s linear infinite alternate
}
.loader-default[data-text]:before {
top: calc(50% - 63px)
}
.loader-default:after {
content: "";
position: fixed;
width: 48px;
height: 48px;
border: 8px solid #fff;
border-left-color: transparent;
border-radius: 50%;
top: calc(50% - 24px);
left: calc(50% - 24px);
animation: rotation 1s linear infinite
}
.loader-default[data-half]:after {
border-right-color: transparent
}
.loader-default[data-inverse]:after {
animation-direction: reverse
}
.loader-double:after,
.loader-double:before {
content: "";
position: fixed;
border-radius: 50%;
border: 8px solid;
animation: rotation 1s linear infinite
}
.loader-double:after {
width: 48px;
height: 48px;
border-color: #fff;
border-left-color: transparent;
top: calc(50% - 24px);
left: calc(50% - 24px)
}
.loader-double:before {
width: 64px;
height: 64px;
border-color: #eb974e;
border-right-color: transparent;
animation-duration: 2s;
top: calc(50% - 32px);
left: calc(50% - 32px)
}
.loader-bar[data-text]:before {
top: calc(50% - 40px);
color: #fff
}
.loader-bar:after {
content: "";
position: fixed;
top: 50%;
left: 50%;
width: 200px;
height: 20px;
transform: translate(-50%, -50%);
background: linear-gradient(-45deg, #4183d7 25%, #52b3d9 0, #52b3d9 50%, #4183d7 0, #4183d7 75%, #52b3d9 0, #52b3d9);
background-size: 20px 20px;
box-shadow: inset 0 10px 0 hsla(0, 0%, 100%, .2), 0 0 0 5px rgba(0, 0, 0, .2);
animation: moveBar 1.5s linear infinite reverse
}
.loader-bar[data-rounded]:after {
border-radius: 15px
}
.loader-bar[data-inverse]:after {
animation-direction: normal
}
@keyframes moveBar {
0% {
background-position: 0 0
}
to {
background-position: 20px 20px
}
}
.loader-bar-ping-pong:before {
width: 200px;
background-color: #000
}
.loader-bar-ping-pong:after,
.loader-bar-ping-pong:before {
content: "";
height: 20px;
position: absolute;
top: calc(50% - 10px);
left: calc(50% - 100px)
}
.loader-bar-ping-pong:after {
width: 50px;
background-color: #f19;
animation: moveBarPingPong .5s linear infinite alternate
}
.loader-bar-ping-pong[data-rounded]:before {
border-radius: 10px
}
.loader-bar-ping-pong[data-rounded]:after {
border-radius: 50%;
width: 20px;
animation-name: moveBarPingPongRounded
}
@keyframes moveBarPingPong {
0% {
left: calc(50% - 100px)
}
to {
left: calc(50% - -50px)
}
}
@keyframes moveBarPingPongRounded {
0% {
left: calc(50% - 100px)
}
to {
left: calc(50% - -80px)
}
}
@keyframes corners {
6% {
width: 60px;
height: 15px
}
25% {
width: 15px;
height: 15px;
left: calc(100% - 15px);
top: 0
}
31% {
height: 60px
}
50% {
height: 15px;
top: calc(100% - 15px);
left: calc(100% - 15px)
}
56% {
width: 60px
}
75% {
width: 15px;
left: 0;
top: calc(100% - 15px)
}
81% {
height: 60px
}
}
.loader-border[data-text]:before {
color: #fff
}
.loader-border:after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 15px;
height: 15px;
background-color: #ff0;
animation: corners 3s ease both infinite
}
.loader-ball:before {
content: "";
position: absolute;
width: 50px;
height: 50px;
top: 50%;
left: 50%;
margin: -25px 0 0 -25px;
background-color: #fff;
border-radius: 50%;
z-index: 1;
animation: kickBall 1s infinite alternate ease-in both
}
.loader-ball[data-shadow]:before {
box-shadow: inset -5px -5px 10px 0 rgba(0, 0, 0, .5)
}
.loader-ball:after {
content: "";
position: absolute;
background-color: rgba(0, 0, 0, .3);
border-radius: 50%;
width: 45px;
height: 20px;
top: calc(50% + 10px);
left: 50%;
margin: 0 0 0 -22.5px;
z-index: 0;
animation: shadow 1s infinite alternate ease-out both
}
@keyframes shadow {
0% {
background-color: transparent;
transform: scale(0)
}
40% {
background-color: transparent;
transform: scale(0)
}
95% {
background-color: rgba(0, 0, 0, .75);
transform: scale(1)
}
to {
background-color: rgba(0, 0, 0, .75);
transform: scale(1)
}
}
@keyframes kickBall {
0% {
transform: translateY(-80px) scaleX(.95)
}
90% {
border-radius: 50%
}
to {
transform: translateY(0) scaleX(1);
border-radius: 50% 50% 20% 20%
}
}
.loader-smartphone:after {
content: "";
color: #fff;
font-size: 12px;
font-family: Helvetica, Arial, sans-serif;
text-align: center;
line-height: 120px;
position: fixed;
left: 50%;
top: 50%;
width: 70px;
height: 130px;
margin: -65px 0 0 -35px;
border: 5px solid #fd0;
border-radius: 10px;
box-shadow: inset 0 5px 0 0 #fd0;
background: radial-gradient(circle at 50% 90%, rgba(0, 0, 0, .5) 6px, transparent 0), linear-gradient(0deg, #fd0 22px, transparent 0), linear-gradient(0deg, rgba(0, 0, 0, .5) 22px, rgba(0, 0, 0, .5));
animation: shake 2s cubic-bezier(.36, .07, .19, .97) both infinite
}
.loader-smartphone[data-screen=""]:after {
content: "Loading"
}
.loader-smartphone:not([data-screen=""]):after {
content: attr(data-screen)
}
@keyframes shake {
5% {
transform: translate3d(-1px, 0, 0)
}
10% {
transform: translate3d(1px, 0, 0)
}
15% {
transform: translate3d(-1px, 0, 0)
}
20% {
transform: translate3d(1px, 0, 0)
}
25% {
transform: translate3d(-1px, 0, 0)
}
30% {
transform: translate3d(1px, 0, 0)
}
35% {
transform: translate3d(-1px, 0, 0)
}
40% {
transform: translate3d(1px, 0, 0)
}
45% {
transform: translate3d(-1px, 0, 0)
}
50% {
transform: translate3d(1px, 0, 0)
}
55% {
transform: translate3d(-1px, 0, 0)
}
}
.loader-clock:before {
width: 120px;
height: 120px;
border-radius: 50%;
margin: -60px 0 0 -60px;
background: linear-gradient(180deg, transparent 50%, #f5f5f5 0), linear-gradient(90deg, transparent 55px, #2ecc71 0, #2ecc71 65px, transparent 0), linear-gradient(180deg, #f5f5f5 50%, #f5f5f5 0);
box-shadow: inset 0 0 0 10px #f5f5f5, 0 0 0 5px #555, 0 0 0 10px #7b7b7b;
animation: rotation infinite 2s linear
}
.loader-clock:after,
.loader-clock:before {
content: "";
position: fixed;
left: 50%;
top: 50%;
overflow: hidden
}
.loader-clock:after {
width: 60px;
height: 40px;
margin: -20px 0 0 -15px;
border-radius: 20px 0 0 20px;
background: radial-gradient(circle at 14px 20px, #25a25a 10px, transparent 0), radial-gradient(circle at 14px 20px, #1b7943 14px, transparent 0), linear-gradient(180deg, transparent 15px, #2ecc71 0, #2ecc71 25px, transparent 0);
animation: rotation infinite 24s linear;
transform-origin: 15px center
}
.loader-curtain:after,
.loader-curtain:before {
position: fixed;
width: 100%;
top: 50%;
margin-top: -35px;
font-size: 70px;
text-align: center;
font-family: Helvetica, Arial, sans-serif;
overflow: hidden;
line-height: 1.2;
content: "Loading"
}
.loader-curtain:before {
color: #666
}
.loader-curtain:after {
color: #fff;
height: 0;
animation: curtain 1s linear infinite alternate both
}
.loader-curtain[data-curtain-text]:not([data-curtain-text=""]):after,
.loader-curtain[data-curtain-text]:not([data-curtain-text=""]):before {
content: attr(data-curtain-text)
}
.loader-curtain[data-brazilian]:before {
color: #f1c40f
}
.loader-curtain[data-brazilian]:after {
color: #2ecc71
}
.loader-curtain[data-colorful]:before {
animation: maskColorful 2s linear infinite alternate both
}
.loader-curtain[data-colorful]:after {
animation: curtain 1s linear infinite alternate both, maskColorful-front 2s 1s linear infinite alternate both;
color: #000
}
@keyframes maskColorful {
0% {
color: #3498db
}
49.5% {
color: #3498db
}
50.5% {
color: #e74c3c
}
to {
color: #e74c3c
}
}
@keyframes maskColorful-front {
0% {
color: #2ecc71
}
49.5% {
color: #2ecc71
}
50.5% {
color: #f1c40f
}
to {
color: #f1c40f
}
}
@keyframes curtain {
0% {
height: 0
}
to {
height: 84px
}
}
.loader-music:after,
.loader-music:before {
content: "";
position: fixed;
width: 240px;
height: 240px;
top: 50%;
left: 50%;
margin: -120px 0 0 -120px;
border-radius: 50%;
text-align: center;
line-height: 240px;
color: #fff;
font-size: 40px;
font-family: Helvetica, Arial, sans-serif;
text-shadow: 1px 1px 0 rgba(0, 0, 0, .5);
letter-spacing: -1px
}
.loader-music:after {
backface-visibility: hidden
}
.loader-music[data-hey-oh]:after,
.loader-music[data-hey-oh]:before {
box-shadow: 0 0 0 10px
}
.loader-music[data-hey-oh]:before {
background-color: #fff;
color: #000;
animation: coinBack 2.5s linear infinite, oh 5s 1.25s linear infinite both
}
.loader-music[data-hey-oh]:after {
background-color: #000;
animation: coin 2.5s linear infinite, hey 5s linear infinite both
}
.loader-music[data-no-cry]:after,
.loader-music[data-no-cry]:before {
background: linear-gradient(45deg, #009b3a 50%, #fed100 51%);
box-shadow: 0 0 0 10px #000
}
.loader-music[data-no-cry]:before {
animation: coinBack 2.5s linear infinite, cry 5s 1.25s linear infinite both
}
.loader-music[data-no-cry]:after {
animation: coin 2.5s linear infinite, no 5s linear infinite both
}
.loader-music[data-we-are]:before {
animation: coinBack 2.5s linear infinite, theWorld 5s 1.25s linear infinite both;
background: radial-gradient(ellipse at center, #4ecdc4 0, #556270)
}
.loader-music[data-we-are]:after {
animation: coin 2.5s linear infinite, weAre 5s linear infinite both;
background: radial-gradient(ellipse at center, #26d0ce 0, #1a2980)
}
.loader-music[data-rock-you]:before {
animation: coinBack 2.5s linear infinite, rockYou 5s 1.25s linear infinite both;
background: #444
}
.loader-music[data-rock-you]:after {
animation: coin 2.5s linear infinite, weWill 5s linear infinite both;
background: #96281b
}
@keyframes coin {
to {
transform: rotateY(359deg)
}
}
@keyframes coinBack {
0% {
transform: rotateY(180deg)
}
50% {
transform: rotateY(1turn)
}
to {
transform: rotateY(180deg)
}
}
@keyframes hey {
0% {
content: "Hey!"
}
50% {
content: "Let's!"
}
to {
content: "Hey!"
}
}
@keyframes oh {
0% {
content: "Oh!"
}
50% {
content: "Go!"
}
to {
content: "Oh!"
}
}
@keyframes no {
0% {
content: "No..."
}
50% {
content: "no"
}
to {
content: "No..."
}
}
@keyframes cry {
0% {
content: "woman"
}
50% {
content: "cry!"
}
to {
content: "woman"
}
}
@keyframes weAre {
0% {
content: "We are"
}
50% {
content: "we are"
}
to {
content: "We are"
}
}
@keyframes theWorld {
0% {
content: "the world,"
}
50% {
content: "the children!"
}
to {
content: "the world,"
}
}
@keyframes weWill {
0% {
content: "We will,"
}
50% {
content: "rock you!"
}
to {
content: "We will,"
}
}
@keyframes rockYou {
0% {
content: "we will"
}
50% {
content: "\1F918"
}
to {
content: "we will"
}
}
.loader-pokeball:before {
content: "";
position: absolute;
width: 100px;
height: 100px;
top: 50%;
left: 50%;
margin: -50px 0 0 -50px;
background: linear-gradient(180deg, red 42%, #000 0, #000 58%, #fff 0);
background-repeat: no-repeat;
background-color: #fff;
border-radius: 50%;
z-index: 1;
animation: movePokeball 1s linear infinite both
}
.loader-pokeball:after {
content: "";
position: absolute;
width: 24px;
height: 24px;
top: 50%;
left: 50%;
margin: -12px 0 0 -12px;
background-color: #fff;
border-radius: 50%;
z-index: 2;
animation: movePokeball 1s linear infinite both, flashPokeball .5s infinite alternate;
border: 2px solid #000;
box-shadow: 0 0 0 5px #fff, 0 0 0 10px #000
}
@keyframes movePokeball {
0% {
transform: translateX(0) rotate(0)
}
15% {
transform: translatex(-10px) rotate(-5deg)
}
30% {
transform: translateX(10px) rotate(5deg)
}
45% {
transform: translatex(0) rotate(0)
}
}
@keyframes flashPokeball {
0% {
background-color: #fff
}
to {
background-color: #fd0
}
}
.loader-bouncing:after,
.loader-bouncing:before {
content: "";
width: 20px;
height: 20px;
position: absolute;
top: calc(50% - 10px);
left: calc(50% - 10px);
border-radius: 50%;
background-color: #fff;
animation: kick .6s infinite alternate
}
.loader-bouncing:after {
margin-left: -30px;
animation: kick .6s infinite alternate
}
.loader-bouncing:before {
animation-delay: .2s
}
@keyframes kick {
0% {
opacity: 1;
transform: translateY(0)
}
to {
opacity: .3;
transform: translateY(-1rem)
}
}