How to use pure CSS to animate Baolo Mints (source code attached)

不言
Release: 2018-10-08 16:41:13
forward
1763 people have browsed it

The content of this article is about how to use pure CSS to realize the animation of Baolu Mint Candy (with source code). It has certain reference value. Friends in need can refer to it. I hope it will be useful to you. Helps.

Effect preview

How to use pure CSS to animate Baolo Mints (source code attached)

Source code download

https://github.com/comehope/front-end-daily -challenges

Code Interpretation

Define dom, only 1 element:

<div></div>
Copy after login

Centered display:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: silver;
}
Copy after login

Define container size:

.spinner {
    width: 50vmin;
    height: 50vmin;
    position: relative;
}
Copy after login

Use before pseudo-element to draw a black ring like Paolo mint candy:

.spinner::before {
    content: '';
    position: absolute;
    box-sizing: border-box;
    width: inherit;
    height: inherit;
    border: 12.5vmin solid;
    border-radius: 50%;
}
Copy after login

Next, create the animation effect.
Set the perspective depth of field:

body {
    perspective: 400px;
}
Copy after login

Let the ring move on the z-axis:

.spinner::before {
    animation: spin 1.5s ease-in-out infinite both reverse;
}

@keyframes spin {
    0%, 100% {
        transform: translateZ(10vmin);
    }

    60% {
        transform: translateZ(-10vmin);
    }
}
Copy after login

Let the ring tilt slightly when the z-axis distance is large:

@keyframes spin {
    0%, 100% {
        transform: translateZ(10vmin) rotateX(25deg);
    }

    60% {
        transform: translateZ(-10vmin);
    }
}
Copy after login

Add a scaling effect:

@keyframes spin {
    0%, 100% {
        transform: translateZ(10vmin) rotateX(25deg);
    }

    33% {
        transform: translateZ(-10vmin) scale(0.4);
    }

    60% {
        transform: translateZ(-10vmin);
    }
}
Copy after login

Use the after pseudo element to draw a white ring, and delay its animation by half of the total animation length:

.spinner::before,
.spinner::after {
    /*略*/
    animation: spin 1.5s ease-in-out infinite both reverse;
}

.spinner::after {
    border-color: white;
    animation-delay: -0.75s;
}
Copy after login

Continue Next, create the animation effect of the container. In order not to be affected by the animation of the sub-element, first temporarily block the animation effect of the pseudo-element.

.spinner::before,
.spinner::after {
    /* animation: spin 1.5s ease-in-out infinite both reverse; */
}
Copy after login

Increase the animation effect of the container rotating along the x-axis. The animation time is twice the animation time of the child element:

.spinner {
    animation: wobble 3s ease-in-out infinite;
}

@keyframes wobble {
    0%, 100% {
        transform: rotateX(15deg);
    }
    
    50% {
        transform: rotateX(60deg);
    }
}
Copy after login

Increase the animation effect of the container rotating along the y-axis:

@keyframes wobble {
    0%, 100% {
        transform: rotateX(15deg) rotateY(60deg);
    }
    
    50% {
        transform: rotateX(60deg) rotateY(-60deg);
    }
}
Copy after login

Increase the animation effect of the overall rotation of the container:

@keyframes wobble {
    0%, 100% {
        transform: rotateX(15deg) rotateY(60deg);
    }
    
    50% {
        transform: rotateX(60deg) rotateY(-60deg) rotate(180deg);
    }
}
Copy after login

Turn on the animation effect of the child element, so that the animation effect of the child element and the animation effect of the container are superimposed:

.spinner::before,
.spinner::after {
    animation: spin 1.5s ease-in-out infinite both reverse;
}
Copy after login

Finally, make the child element in Movement in 3d space:

.spinner {
    transform-style: preserve-3d;
}
Copy after login

Done!

The above is the detailed content of How to use pure CSS to animate Baolo Mints (source code attached). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:segmentfault.com
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