<section>
<div class="loading">
<div class="pack-man">
</div>
<div class="fuels">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="text">
<div class="p"></div>
<div class="a"></div>
<div class="c"></div>
<div class="hyphen"></div>
<div class="m"></div>
<div class="a"></div>
<div class="n"></div>
</div>
</section>
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {background: #333;}
section {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
min-height: 100vh;
}
.loading {
width: 200px;
height: 100px;
margin-left: -100px;
position: relative;
}
.pack-man {
position: absolute;
width: 50px;
height: 100px;
top: 0;
left: 0;
border-radius: 50px 0 0 50px;
background: yellow;
}
.pack-man::before,
.pack-man::after {
content: "";
display: block;
width: 100px;
height: 50px;
position: absolute;
background: yellow;
left: 0;
}
.pack-man::before {
top: 50px;
border-radius: 0 0 50px 50px;
transform-origin: center top;
transform: rotate(40deg);
animation: eat1 cubic-bezier(0.55, 0.06, 0.68, 0.19) .5s 0s infinite alternate;
}
@keyframes eat1 {
60%,
100% {transform: rotate(-5deg);}
}
.pack-man::after {
top: 0;
border-radius: 50px 50px 0 0;
transform-origin: center bottom;
transform: rotate(-40deg);
animation: eat2 cubic-bezier(0.55, 0.06, 0.68, 0.19) .5s 0s infinite alternate;
}
@keyframes eat2 {
60%,
100% {transform: rotate(5deg);}
}
.fuels {
position: relative;
display: flex;
top: 40px;
left: 105px;
width: 210px;
height: 30px;
}
.fuels div {
width: 30px;
height: 30px;
background: yellow;
border-radius: 50%;
animation: translate1 ease-out 1s 0s infinite;
}
.fuels div+div {margin-left: 60px;}
@keyframes translate1 {
100% {transform: translateX(-90px);}
}
.fuels div:last-child {
position: absolute;
right: 0;
transform: scale(0);
animation: translate2 linear 1s 0s infinite;
}
@keyframes translate2 {
0%,
69% {transform: scale(0);}
70%,
90% {transform: scale(.5);}
80%,
100% {transform: scale(1);}
}
.text {
display: flex;
margin-top: 20px;
}
.text div {
background: yellow;
}
.p {
width: 10px;
height: 40px;
position: relative;
margin-right: 14px;
}
.p::before {
content: "";
display: block;
background: yellow;
width: 20px;
height: 25px;
position: absolute;
left: 9px;
border-radius: 0 12.5px 12.5px 0;
}
.p::after {
content: "";
display: block;
background: #333;
position: absolute;
width: 8px;
height: 8px;
border-radius: 50%;
top: 8px;
left: 11px;
}
.a {
width: 40px;
height: 40px;
clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
position: relative;
}
.a::before {
content: "";
display: block;
background: #333;
position: absolute;
width: 8px;
height: 8px;
border-radius: 50%;
top: 20px;
left: 16px;
}
div.c {
width: 40px;
height: 40px;
background: transparent;
position: relative;
}
.c::before,
.c::after {
content: "";
display: block;
background: yellow;
width: 40px;
height: 20px;
position: absolute;
}
.c::before {
border-radius: 20px 20px 0 0;
transform-origin: 50% 100%;
transform: rotate(-30deg);
}
.c::after {
border-radius: 0 0 20px 20px;
transform-origin: 50% 0%;
transform: rotate(30deg);
bottom: 0;
}
.hyphen {
width: 20px;
height: 10px;
margin: 15px 5px;
}
div.m {
width: 40px;
height: 40px;
background: transparent;
position: relative;
}
.m::before,
.m::after {
content: "";
display: block;
width: 40px;
height: 40px;
background: yellow;
position: absolute;
}
.m::before {
clip-path: polygon(0% 0%, 0% 100%, 100% 100%);
}
.m::after {
clip-path: polygon(100% 0%, 0% 100%, 100% 100%);
}
div.n {
width: 40px;
height: 40px;
background: transparent;
position: relative;
}
.n::before,
.n::after {
content: "";
display: block;
height: 40px;
background: yellow;
position: absolute;
}
.n::before {
width: 40px;
clip-path: polygon(0% 0%, 0% 100%, 100% 100%);
}
.n::after {
width: 20px;
top: -.1px;
right: 0;
}
.text div + div {margin-left: 3px;}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.