How to use CSS to realize the animation effect of roller coaster loader

不言
Release: 2018-08-08 14:52:12
Original
1955 people have browsed it

The content of this article is about how to use CSS to realize the animation effect of the roller coaster loader. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Effect preview

How to use CSS to realize the animation effect of roller coaster loader

Code interpretation

Definition of dom, container Contains 3 elements, representing 3 dots:

<p>
    <span></span>
    <span></span>
    <span></span>
</p>
Copy after login

Centered display:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, silver, teal);
}
Copy after login

Defines the diameter of the Ferris wheel, and other lengths use this value as the basic scale:

.loader {
    --diameter: 10em;
}
Copy after login

Define the container size, the width is 2 times the height:

.loader {
    --width: calc(var(--diameter) * 2);
    width: var(--width);
    height: var(--diameter);
}
Copy after login

Define the shared attributes of the pseudo-element:

.loader {
    position: relative;
}

.loader::before,
.loader::after {
    content: '';
    position: absolute;
    bottom: 0;
}
Copy after login

Draw the bottom track and define a variable representing the line thickness:

.loader {
    --stroke-width: calc(var(--diameter) / 40);
    color: white;
}

.loader::before {
    width: inherit;
    height: var(--stroke-width);
    background-color: currentColor;
}
Copy after login

Draw the circular orbit in the middle:

.loader::after {
    box-sizing: border-box;
    width: var(--diameter);
    height: var(--diameter);
    border: var(--stroke-width) solid;
    border-radius: 50%;
    left: 25%;
}
Copy after login

Draw a dot and define a variable representing the diameter of the dot:

.loader {
    --dot-diameter: calc(var(--diameter) / 10);
}

.loader span {
    position: absolute;
    width: var(--dot-diameter);
    height: var(--dot-diameter);
    background-color: currentColor;
    border-radius: 50%;
    bottom: var(--stroke-width);
    left: calc((var(--width) - var(--dot-diameter)) / 2);
}
Copy after login

Add for the dot Animation effect of rotating along a circular orbit:

.loader span {
    animation:
        rotating 2s linear infinite;
    --vertical-center: calc((var(--diameter) / 2 - var(--stroke-width) - var(--dot-diameter)) * -1);
    transform-origin: 50% var(--vertical-center);
}

@keyframes rotating {
    0%, 10% {
        transform: rotate(0deg);
    }

    60%, 100% {
        transform: rotate(-1turn);
    }
}
Copy after login

Add moving animation effect to the dots:

.loader span {
    animation:
        run 2s linear infinite,
        rotating 2s linear infinite;
}

@keyframes run {
    0% {
        left: calc(var(--dot-diameter) * -1);
    }

    10%, 60% {
        left: calc((var(--width) - var(--dot-diameter)) / 2);
    }

    70%, 100% {
        left: calc(var(--width));
    }
}
Copy after login

Set animation delay for the other 2 dots to make the 3 dots look like Like 3 carriages next to each other:

.loader span:nth-child(1) {
    animation-delay: 0.075s;
}

.loader span:nth-child(2) {
    animation-delay: 0.15s;
}
Copy after login

Finally, hide the content outside the container:

.loader {
    overflow: hidden;
}
Copy after login

Recommended related articles:

css to implement navigation switching Code example

How to use pure CSS to achieve the effect of a green pig

css3 to achieve the effect of a moving menu button

The above is the detailed content of How to use CSS to realize the animation effect of roller coaster loader. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!