Results preview
Press the right "click the Preview" button to preview the current page, click on the link to full-screen preview.
https://codepen.io/comehope/pen/ERwpeG
Interactive video
This video is interactive, you can pause the code video, editing video.
Please use chrome, safari, edge open view.
https://scrimba.com/p/pEgDAM/cED8KsK
Source code download
Daily front-end combat series full source code can be downloaded from github:
https://github.com/comehope/front-end-daily-challenges
Code Reading
Defined dom, container 7 comprising sub-elements, each sub-element has a letter:
<div class="loader">
<span>l</span>
<span>o</span>
<span>a</span>
<span>d</span>
<span>i</span>
<span>n</span>
<span>g</span>
</div>
Centered:
body {
margin: 0;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background-color: black;
}
Setting container sizes:
.loader {
width: 40em;
height: 3em;
}
Setting text style:
.loader {
color: dodgerblue;
font-size: 1.5em;
text-transform: uppercase;
font-family: sans-serif;
}
To increase the text fade fade animation:
.loader span {
animation: moving 2s linear infinite;
}
@keyframes moving {
0% {
filter: opacity(0);
}
33% {
filter: opacity(1);
}
66% {
filter: opacity(1);
}
100% {
filter: opacity(0);
}
}
Animate delay, enhanced animation effects:
.loader span {
animation-delay: calc((var(--n) - 10) * 0.2s)
}
.loader span:nth-child(1) {
--n: 1;
}
.loader span:nth-child(2) {
--n: 2;
}
.loader span:nth-child(3) {
--n: 3;
}
.loader span:nth-child(4) {
--n: 4;
}
.loader span:nth-child(5) {
--n: 5;
}
.loader span:nth-child(6) {
--n: 6;
}
.loader span:nth-child(7) {
--n: 7;
}
Set the text rotation effect:
.loader {
position: relative;
}
.loader span {
position: absolute;
height: 3em;
}
@keyframes moving {
0% {
filter: opacity(0);
transform: rotate(-180deg);
}
33% {
filter: opacity(1);
transform: rotate(0deg);
}
66% {
filter: opacity(1);
transform: rotate(0deg);
}
100% {
filter: opacity(0);
transform: rotate(180deg);
}
}
The effect of increasing the text Mobile:
@keyframes moving {
0% {
filter: opacity(0);
transform: rotate(-180deg);
left: 100%;
}
33% {
filter: opacity(1);
transform: rotate(0deg);
left: 60%;
}
66% {
filter: opacity(1);
transform: rotate(0deg);
left: 40%;
}
100% {
filter: opacity(0);
transform: rotate(180deg);
left: 0;
}
}
Add text color effect:
.loader {
animation: change-color 10s linear infinite;
}
@keyframes change-color {
0% {
color: dodgerblue;
}
20% {
color: hotpink;
}
40% {
color: gold;
}
60% {
color: mediumpurple;
}
80% {
color: lightgreen;
}
100% {
color: dodgerblue;
}
}
Finally, the page may appear in the outer part of the hide:
body {
overflow: hidden;
}
We're done!