Front-end daily combat: # 53 video shows how a text animation fade fade loader with pure CSS creation

image description

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!

Guess you like

Origin www.cnblogs.com/jlfw/p/11900857.html