<div class="snowflakes" aria-hidden="true">
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
    <div class="snowflake">
        <div class="inner">●</div>
    </div>
</div>
<br>
<p>I love the winter :></p>

<style>
.snowflake {
    color: white;
    font-size: 0.5em;
    font-family: Arial, sans-serif;
    text-shadow: 0 0 5px #000;
    visibility: hidden;
}

.snowflake,
.snowflake .inner {
    z-index: 1;
    animation-iteration-count: infinite;
    animation-play-state: running
}

@keyframes snowflakes-fall {
    0% {
        visibility: visible;
        transform: translateY(0)
    }

    100% {
        visibility: visible;
        transform: translateY(110vh)
    }
}

@keyframes snowflakes-shake {

    0%,
    100% {
        transform: translateX(0)
    }

    50% {
        transform: translateX(80px)
    }
}

.snowflake {
    position: fixed;
    top: -10%;
    -webkit-user-select: none;
    user-select: none;
    cursor: default;
    animation-name: snowflakes-shake;
    animation-delay: 0.5s;
    animation-duration: 3s;
    animation-timing-function: ease-in-out
}

.snowflake .inner {
    animation-duration: 10s;
    animation-delay: 0.5s;
    animation-name: snowflakes-fall;
    animation-timing-function: linear
}

.snowflake:nth-of-type(0) {
    left: 1%;
    animation-delay: 0s
}

.snowflake:nth-of-type(0) .inner {
    animation-delay: 0s
}

.snowflake:first-of-type {
    left: 10%;
    animation-delay: 1s
}

.snowflake:first-of-type .inner,
.snowflake:nth-of-type(8) .inner {
    animation-delay: 1s
}

.snowflake:nth-of-type(2) {
    left: 20%;
    animation-delay: .5s
}

.snowflake:nth-of-type(2) .inner,
.snowflake:nth-of-type(6) .inner {
    animation-delay: 6s
}

.snowflake:nth-of-type(3) {
    left: 30%;
    animation-delay: 2s
}

.snowflake:nth-of-type(11) .inner,
.snowflake:nth-of-type(3) .inner {
    animation-delay: 4s
}

.snowflake:nth-of-type(4) {
    left: 40%;
    animation-delay: 2s
}

.snowflake:nth-of-type(10) .inner,
.snowflake:nth-of-type(4) .inner {
    animation-delay: 2s
}

.snowflake:nth-of-type(5) {
    left: 50%;
    animation-delay: 3s
}

.snowflake:nth-of-type(5) .inner {
    animation-delay: 8s
}

.snowflake:nth-of-type(6) {
    left: 60%;
    animation-delay: 2s
}

.snowflake:nth-of-type(7) {
    left: 70%;
    animation-delay: 1s
}

.snowflake:nth-of-type(7) .inner {
    animation-delay: 2.5s
}

.snowflake:nth-of-type(8) {
    left: 80%;
    animation-delay: 0s
}

.snowflake:nth-of-type(9) {
    left: 90%;
    animation-delay: 1.5s
}

.snowflake:nth-of-type(9) .inner {
    animation-delay: 3s
}

.snowflake:nth-of-type(10) {
    left: 25%;
    animation-delay: 0s
}

.snowflake:nth-of-type(11) {
    left: 65%;
    animation-delay: 2.5s
}
</style>