<div class="loader">
<div class="ball"></div>
<div class="ball"></div>
<div class="ball"></div>
<span data-text="Loading...">Loading...</span>
</div>
body {
width: 100vw;
height: 100vh;
margin: 0;
display: flex;
align-items: center;
justify-content: center;
background-color: #303240;
user-select: none;
}
.loader {
width: 120px;
height: 75px;
display: flex;
flex-wrap: wrap;
align-items: flex-end;
justify-content: space-between;
}
.loader span {
position: relative;
font-size: 20px;
text-transform: uppercase;
letter-spacing: 4px;
margin: auto;
color: rgba(255, 255, 255, 0.2);
/* -webkit-text-stroke: 1px #383d52; */
line-height: 30px;
height: 30px;
}
.loader span::before {
position: absolute;
font-size: 20px;
text-transform: uppercase;
letter-spacing: 4px;
/* margin: auto; */
/* color: white; */
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
width: 0;
height: 100%;
color: white;
overflow: hidden;
/* -webkit-text-stroke: 0 white; */
border-right: 3px solid white;
animation: animate 2.5s cubic-bezier(0.46, 0.03, 0.52, 0.96) infinite;
}
.ball {
width: 25px;
height: 25px;
border-radius: 50%;
background-color: #fff;
animation: bounce .5s alternate infinite;
}
.ball:nth-child(2) {
animation-delay: .16s;
}
.ball:nth-child(3) {
animation-delay: .32s;
}
@keyframes bounce {
from {
transform: translateX(1.25);
}
to {
transform: translateY(-50px) scaleX(1);
}
}
@keyframes animate {
0%,
10%,
100% {
width: 0;
}
70%,
90% {
width: 100%;
}
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.