CSS3 미니 바람개비 구현

전언
CSS3로 바람개비 효과를 구현했습니다.
효과
코드

<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>   -   title>
    <style type="text/css">
    html {
        font-size: 10px;
    }
    
    html * {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
    }
    
    .windmill {
        width: 25rem;
        min-height: 30rem;
        height: auto;
        margin: 3rem auto;
        display: -webkit-box;
        display: -webkit-flex;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
        -webkit-flex-direction: column;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-pack: start;
        -webkit-justify-content: flex-start;
            -ms-flex-pack: start;
                justify-content: flex-start;
        -webkit-box-align: center;
        -webkit-align-items: center;
            -ms-flex-align: center;
                align-items: center;
    }
    /*    */
    
    .windmill-head {
        height: 20rem;
        width: 20rem;
        display: -webkit-box;
        display: -webkit-flex;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: horizontal;
        -webkit-box-direction: normal;
        -webkit-flex-direction: row;
            -ms-flex-direction: row;
                flex-direction: row;
        -webkit-flex-wrap: wrap;
            -ms-flex-wrap: wrap;
                flex-wrap: wrap;
        -webkit-justify-content: space-around;
            -ms-flex-pack: distribute;
                justify-content: space-around;
        -webkit-align-content: space-around;
            -ms-flex-line-pack: distribute;
                align-content: space-around;
        -webkit-transform: translateZ(0);
                transform: translateZ(0);
        -webkit-animation: rotate-windmill 1s linear infinite;
                animation: rotate-windmill 1s linear infinite;
        border-radius: 50%;
        border: 0.1rem solid #DBE526;
        -webkit-transition: border-radius 2s linear;
        transition: border-radius 2s linear;
    }
    /*          */
    
    .wrapper {
        display: -webkit-box;
        display: -webkit-flex;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
        -webkit-flex-direction: column;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-flex-wrap: wrap;
            -ms-flex-wrap: wrap;
                flex-wrap: wrap;
        -webkit-box-pack: justify;
        -webkit-justify-content: space-between;
            -ms-flex-pack: justify;
                justify-content: space-between;
        height: 135%;
        width: 50%;
        -webkit-box-align: center;
        -webkit-align-items: center;
            -ms-flex-align: center;
                align-items: center;
    }
    /*       */
    
    .wrapper1 {
        -webkit-transform: rotate(-45deg) translate(5rem);
                transform: rotate(-45deg) translate(5rem);
        -webkit-transform-origin: right center;
                transform-origin: right center;
    }
    
    .wrapper2 {
        -webkit-transform: rotate(45deg) translate(-5rem);
                transform: rotate(45deg) translate(-5rem);
        -webkit-transform-origin: left center;
                transform-origin: left center;
    }
    /*          */
    
    .leaf {
        height: 13rem;
        width: 5rem;
        border-radius: 5rem/ 5rem 5rem 20rem 20rem;
        -webkit-box-shadow: 0.1rem 0.1rem 1rem rgba(64, 56, 56, .35) inset, 0.2rem 0.2rem 0.05rem rgba(0, 0, 0, .65);
                box-shadow: 0.1rem 0.1rem 1rem rgba(64, 56, 56, .35) inset, 0.2rem 0.2rem 0.05rem rgba(0, 0, 0, .65);
    }
    
    .leaf1 {
        border: 0.05rem solid #D1A23A;
        -webkit-transform: rotate(0deg) translate(0);
                transform: rotate(0deg) translate(0);
        background-color: rgba(230, 0, 100, 5);
        background: -webkit-gradient(linear, left top, left bottom, from(#D02CE4), to(#f5f5f5));
        background: -webkit-linear-gradient(top, #D02CE4, #f5f5f5);
        background: linear-gradient(180deg, #D02CE4, #f5f5f5);
        -webkit-transition: background 2s linear;
        transition: background 2s linear;
    }
    
    .leaf2 {
        border: 0.05rem solid #49D13A;
        background-color: rgba(230, 0, 150, 5);
        -webkit-transform: rotate(-180deg) translate(0);
                transform: rotate(-180deg) translate(0);
        background: -webkit-gradient(linear, left top, left bottom, from(#B91717), to(#f5f5f5));
        background: -webkit-linear-gradient(top, #B91717, #f5f5f5);
        background: linear-gradient(180deg, #B91717, #f5f5f5);
        -webkit-transition: background 2s linear 2s;
        transition: background 2s linear 2s;
    }
    
    .leaf3 {
        border: 0.05rem solid #C6079D;
        background-color: rgba(130, 0, 100, 5);
        -webkit-transform: rotate(0deg) translate(0);
                transform: rotate(0deg) translate(0);
        background: -webkit-gradient(linear, left top, left bottom, from(#1CBA9F), to(#f5f5f5));
        background: -webkit-linear-gradient(top, #1CBA9F, #f5f5f5);
        background: linear-gradient(180deg, #1CBA9F, #f5f5f5);
        -webkit-transition: background 2s linear;
        transition: background 2s linear;
        -webkit-transition: background 2s linear 4s;
        transition: background 2s linear 4s;
    }
    
    .leaf4 {
        border: 0.05rem solid #3A5FD1;
        background-color: rgba(230, 100, 100, 5);
        -webkit-transform: rotate(-180deg) translate(0);
                transform: rotate(-180deg) translate(0);
        background: -webkit-gradient(linear, left top, left bottom, from(#335642), to(#f5f5f5));
        background: -webkit-linear-gradient(top, #335642, #f5f5f5);
        background: linear-gradient(180deg, #335642, #f5f5f5);
        -webkit-transition: background 2s linear 6s;
        transition: background 2s linear 6s;
    }
    /*    */
    
    .windmill-pillar {
        -webkit-transform: translateZ(0);
                transform: translateZ(0);
        width: 3rem;
        height: 20rem;
        background: #FFF;
        -webkit-transform: translateY(-52%);
                transform: translateY(-52%);
        position: relative;
        z-index: -2;
        border-radius: 50% 50% 0 0;
        -webkit-animation: cd 2s linear infinite;
                animation: cd 2s linear infinite;
    }
    
    @-webkit-keyframes rotate-windmill {
        0% {
            -webkit-transform: rotate(0);
                    transform: rotate(0);
        }
        100% {
            -webkit-transform: rotate(360deg);
                    transform: rotate(360deg);
        }
    }
    
    @keyframes rotate-windmill {
        0% {
            -webkit-transform: rotate(0);
                    transform: rotate(0);
        }
        100% {
            -webkit-transform: rotate(360deg);
                    transform: rotate(360deg);
        }
    }
    
    @-webkit-keyframes cd {
        0% {
            background: #F5F5F5;
        }
        50% {
            background: #E1CB82;
        }
        75% {
            background: #F1F358;
        }
        100% {
            background: #FFFC00;
        }
    }
    
    @keyframes cd {
        0% {
            background: #F5F5F5;
        }
        50% {
            background: #E1CB82;
        }
        75% {
            background: #F1F358;
        }
        100% {
            background: #FFFC00;
        }
    }
    style>
head>

<body>
    <div class="windmill">
        <div class="windmill-head">
            <div class="wrapper wrapper1">
                <div class="leaf leaf1">div>
                <div class="leaf leaf2">div>
            div>
            <div class="wrapper wrapper2">
                <div class="leaf leaf3">div>
                <div class="leaf leaf4">div>
            div>
        div>
        <div class="windmill-pillar">div>
    div>
body>

html>

좋은 웹페이지 즐겨찾기