This is the technical blog post. Click here to see the actual demo.
Credit to @brentclouse for the original inspiration.
Credit to @brentclouse for the original inspiration.
<div id="processor"></div>
#processor {
position: absolute;
width: 56px;
height: 56px;
background-color: #222222;
color: #ffffff;
top: -28px;
left: -28px;
font-size: 15px;
letter-spacing: 3px;
font-weight: 700;
font-family: 'Oxygen', Helvetica, arial, sans-serif;
-webkit-animation: processor 3s infinite linear;
animation: processor 3s infinite linear;
}
#processor::before {
content: "llllll";
position: absolute;
width: 50px;
overflow: hidden;
text-shadow: -1px 0 0 #808080;
-webkit-transform: rotateZ(-90deg);
transform: rotateZ(-90deg);
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
left: 45px;
bottom: -15px;
-webkit-animation: processor-before 3s infinite linear;
animation: processor-before 3s infinite linear;
}
#processor::after {
content: "llllll";
position: absolute;
width: 50px;
overflow: hidden;
text-shadow: -1px 0 0 #808080;
-webkit-transform: rotateZ(90deg) rotateY(180deg);
transform: rotateZ(90deg) rotateY(180deg);
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
left: 10px;
top: 50px;
-webkit-animation: processor-after 3s infinite linear;
animation: processor-after 3s infinite linear;
}
@keyframes processor {
0% {
width: 0;
height: 0;
left: 0;
top: 0;
}
24% {
width: 0;
height: 0;
left: 0;
top: 0;
}
28% {
width: 56px;
height: 56px;
left: -28px;
top: -28px;
}
}
@keyframes processor-before {
0% {
width: 0;
}
32% {
width: 0;
}
44% {
width: 50px;
}
}
@keyframes processor-after {
0% {
width: 0;
}
44% {
width: 0;
}
56% {
width: 50px;
}
}
<div id="screen-gameboy-text">GAME BOY</div>
#screen-gameboy-text {
position: absolute;
font-family: 'Asap', sans-serif;
font-size: 32px;
font-weight: 700;
font-style: italic;
letter-spacing: -2px;
text-align: center;
opacity: 0;
width: 500px;
left: -250px;
top: -22px;
-webkit-transform: skew(-5deg);
transform: skew(-5deg);
overflow: hidden;
white-space: nowrap;
color: #3232fc;
background: -webkit-linear-gradient(0deg, #3232fc 40%, #85e367 40%, #85e367 45%, #ff52e8 45%, #ff52e8 50%, #ff0151 50%, #ff0151 55%, #f9e52e 55%, #f9e52e 60%, #e8e8e8 60%);
background-position: 130px;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-animation: screen-gameboy-text 3s infinite linear;
animation: screen-gameboy-text 3s infinite linear;
}
@keyframes screen-gameboy-text {
0% {
color: #f9e52e;
background-position: -120px;
opacity: 0;
}
11.7% {
opacity: 0;
}
12% {
color: #f9e52e;
background-position: -120px;
opacity: 1;
}
19.5% {
color: #f9e52e;
}
21% {
color: #ff0151;
}
28.5% {
color: #ff0151;
}
30% {
color: #ff52e8;
}
37.5% {
color: #ff52e8;
}
39% {
color: #85e367;
}
46.5% {
color: #85e367;
}
48% {
color: #3232fc;
}
54% {
background-position: 130px;
}
81% {
opacity: 1;
}
96% {
opacity: 0;
}
}
<div id="glass-color-text">C</div>
#glass-color-text {
color: #ff0151;
position: absolute;
top: -26px;
left: -45px;
font-family: 'Comic Sans', 'Comic Sans MS', 'ChalkboardSE-Bold', sans-serif, cursive;
font-size: 35px;
letter-spacing: -2px;
font-weight: 700;
-webkit-animation: glass-color-text 3s infinite linear;
animation: glass-color-text 3s infinite linear;
}
#glass-color-text::before {
content: "L";
position: absolute;
left: 18px;
top: 17px;
line-height: 5px;
text-indent: 13px;
color: #85e367;
border: 5px #5151dd solid;
border-radius: 50%;
width: 10px;
height: 10px;
-webkit-animation: glass-color-text-before 3s infinite linear;
animation: glass-color-text-before 3s infinite linear;
}
#glass-color-text::after {
content: "R";
position: absolute;
left: 48px;
top: 17px;
line-height: 5px;
text-indent: 13px;
color: #01b4dd;
border: 5px #f9e52e solid;
border-radius: 50%;
width: 10px;
height: 10px;
-webkit-animation: glass-color-text-after 3s infinite linear;
animation: glass-color-text-after 3s infinite linear;
}
@keyframes glass-color-text {
0% {
color: transparent;
}
32% {
color: transparent;
}
36% {
color: #ff0151;
}
}
@keyframes glass-color-text-before {
0% {
color: transparent;
border-color: transparent;
}
36% {
border-color: transparent;
}
40% {
color: transparent;
border-color: #5151dd;
}
42% {
color: #85e367;
}
}
@keyframes glass-color-text-after {
0% {
color: transparent;
border-color: transparent;
}
42% {
border-color: transparent;
}
46% {
color: transparent;
border-color: #f9e52e;
}
50% {
color: #01b4dd;
}
}
<div id="circle"></div>
<div id="square"></div>
#circle {
position: absolute;
box-shadow: inset 0 0 0 3px #5151dd;
border-radius: 50% / 25%;
width: 40px;
height: 80px;
top: -40px;
left: -70px;
-webkit-transform: rotateZ(-90deg);
transform: rotateZ(-90deg);
}
#circle::before {
content: "";
position: absolute;
left: 50%;
top: 0;
width: 50%;
height: 0%;
background-color: #e8e8e8;
-webkit-animation: circle-before 3s infinite linear;
animation: circle-before 3s infinite linear;
}
#circle::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 50%;
height: 0%;
background-color: #e8e8e8;
-webkit-animation: circle-after 3s infinite linear;
animation: circle-after 3s infinite linear;
}
@keyframes circle-before {
0% {
height: 100%;
}
10% {
height: 100%;
}
20% {
height: 0%;
}
}
@keyframes circle-after {
0% {
height: 100%;
}
20% {
height: 100%;
}
30% {
height: 0%;
}
}
#square {
position: absolute;
box-shadow: inset 0 0 0 3px #ff0151;
width: 60px;
height: 60px;
top: -30px;
left: 30px;
}
#square::before {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 3px;
height: 0;
background-color: #e8e8e8;
-webkit-animation: square-before 3s infinite linear;
animation: square-before 3s infinite linear;
}
#square::after {
content: "";
position: absolute;
top: 3px;
right: 0;
width: 3px;
height: 0;
background-color: #e8e8e8;
-webkit-animation: square-after 3s infinite linear;
animation: square-after 3s infinite linear;
}
@keyframes square-before {
0% {
height: 100%;
width: 100%;
}
40% {
height: 100%;
width: 100%;
}
45% {
height: 100%;
width: 3px;
}
50% {
height: 0;
width: 3px;
}
}
@keyframes square-after {
0% {
height: 57px;
width: 57px;
}
50% {
height: 57px;
width: 57px;
}
55% {
height: 57px;
width: 3px;
}
60% {
height: 0;
width: 3px;
}
}
<div id="cover-vertical"></div>
#cover-vertical {
position: absolute;
width: 20px;
height: 50px;
bottom: 0;
background-color: #85e367;
-webkit-animation: cover-vertical 3s infinite linear;
animation: cover-vertical 3s infinite linear;
box-shadow: 20px 0 #85e367, 40px 0 #85e367, 60px 0 #85e367, 80px 0 #85e367, 100px 0 #85e367, 120px 0 #85e367, 140px 0 #85e367, 160px 0 #85e367, 180px 0 #85e367;
}
@keyframes cover-vertical {
0% {
width: 0;
height: 0;
box-shadow: none;
}
20% {
width: 20px;
height: 0;
}
25.45454545% {
height: 25px;
box-shadow: 20px 50px #85e367, 40px 50px #85e367, 60px 50px #85e367, 80px 50px #85e367, 100px 50px #85e367, 120px 50px #85e367, 140px 50px #85e367, 160px 50px #85e367, 180px 50px #85e367;
}
30.90909091% {
height: 50px;
box-shadow: 20px 25px #85e367, 40px 50px #85e367, 60px 50px #85e367, 80px 50px #85e367, 100px 50px #85e367, 120px 50px #85e367, 140px 50px #85e367, 160px 50px #85e367, 180px 50px #85e367;
}
36.36363636% {
box-shadow: 20px 0 #85e367, 40px 25px #85e367, 60px 50px #85e367, 80px 50px #85e367, 100px 50px #85e367, 120px 50px #85e367, 140px 50px #85e367, 160px 50px #85e367, 180px 50px #85e367;
}
41.81818182% {
box-shadow: 20px 0 #85e367, 40px 0 #85e367, 60px 25px #85e367, 80px 50px #85e367, 100px 50px #85e367, 120px 50px #85e367, 140px 50px #85e367, 160px 50px #85e367, 180px 50px #85e367;
}
47.27272727% {
box-shadow: 20px 0 #85e367, 40px 0 #85e367, 60px 0 #85e367, 80px 25px #85e367, 100px 50px #85e367, 120px 50px #85e367, 140px 50px #85e367, 160px 50px #85e367, 180px 50px #85e367;
}
52.72727273% {
box-shadow: 20px 0 #85e367, 40px 0 #85e367, 60px 0 #85e367, 80px 0 #85e367, 100px 25px #85e367, 120px 50px #85e367, 140px 50px #85e367, 160px 50px #85e367, 180px 50px #85e367;
}
58.18181818% {
box-shadow: 20px 0 #85e367, 40px 0 #85e367, 60px 0 #85e367, 80px 0 #85e367, 100px 0 #85e367, 120px 25px #85e367, 140px 50px #85e367, 160px 50px #85e367, 180px 50px #85e367;
}
63.63636364% {
box-shadow: 20px 0 #85e367, 40px 0 #85e367, 60px 0 #85e367, 80px 0 #85e367, 100px 0 #85e367, 120px 0 #85e367, 140px 25px #85e367, 160px 50px #85e367, 180px 50px #85e367;
}
69.09090909% {
box-shadow: 20px 0 #85e367, 40px 0 #85e367, 60px 0 #85e367, 80px 0 #85e367, 100px 0 #85e367, 120px 0 #85e367, 140px 0 #85e367, 160px 25px #85e367, 180px 50px #85e367;
}
74.54545455% {
box-shadow: 20px 0 #85e367, 40px 0 #85e367, 60px 0 #85e367, 80px 0 #85e367, 100px 0 #85e367, 120px 0 #85e367, 140px 0 #85e367, 160px 0 #85e367, 180px 25px #85e367;
}
80% {
box-shadow: 20px 0 #85e367, 40px 0 #85e367, 60px 0 #85e367, 80px 0 #85e367, 100px 0 #85e367, 120px 0 #85e367, 140px 0 #85e367, 160px 0 #85e367, 180px 0 #85e367;
}
}