0

Bootstrap 4 website preloader with flower ripple/wave effect using pure HTML and CSS

<div class="container">
    <div class="row">
        <div id="loader">
            <div class="dot"></div>
            <div class="dot"></div>
            <div class="dot"></div>
            <div class="dot"></div>
            <div class="dot"></div>
            <div class="dot"></div>
            <div class="dot"></div>
            <div class="dot"></div>
            <div class="lading"></div>
        </div>
    </div>
</div>
body {
    background: #000
}

#loader {
    bottom: 0;
    height: 175px;
    left: 0;
    margin: auto;
    position: absolute;
    right: 0;
    top: 0;
    width: 175px
}

#loader {
    bottom: 0;
    height: 175px;
    left: 0;
    margin: auto;
    position: absolute;
    right: 0;
    top: 0;
    width: 175px
}

#loader .dot {
    bottom: 0;
    height: 100%;
    left: 0;
    margin: auto;
    position: absolute;
    right: 0;
    top: 0;
    width: 90px
}

#loader .dot::before {
    border-radius: 100%;
    content: "";
    height: 90px;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    transform: scale(0);
    width: 87.5px
}

#loader .dot:nth-child(7n+1) {
    transform: rotate(45deg)
}

#loader .dot:nth-child(7n+1)::before {
    animation: 2s linear 0.3s normal none infinite running load;
    background: #EE82EE none repeat scroll 0 0
}

#loader .dot:nth-child(7n+2) {
    transform: rotate(90deg)
}

#loader .dot:nth-child(7n+2)::before {
    animation: 2s linear 0.3s normal none infinite running load;
    background: #DA70D6 none repeat scroll 0 0
}

#loader .dot:nth-child(7n+3) {
    transform: rotate(135deg)
}

#loader .dot:nth-child(7n+3)::before {
    animation: 2s linear 0.4s normal none infinite running load;
    background: #FF00FF none repeat scroll 0 0
}

#loader .dot:nth-child(7n+4) {
    transform: rotate(180deg)
}

#loader .dot:nth-child(7n+4)::before {
    animation: 2s linear 0.5s normal none infinite running load;
    background: #BA55D3 none repeat scroll 0 0
}

#loader .dot:nth-child(7n+5) {
    transform: rotate(225deg)
}

#loader .dot:nth-child(7n+5)::before {
    animation: 2s linear 0.6s normal none infinite running load;
    background: #9400D3 none repeat scroll 0 0
}

#loader .dot:nth-child(7n+6) {
    transform: rotate(270deg)
}

#loader .dot:nth-child(7n+6)::before {
    animation: 2s linear 0.7s normal none infinite running load;
    background: #9932CC none repeat scroll 0 0
}

#loader .dot:nth-child(7n+7) {
    transform: rotate(315deg)
}

#loader .dot:nth-child(7n+7)::before {
    animation: 2s linear 0.8s normal none infinite running load;
    background: #8B008B none repeat scroll 0 0
}

#loader .dot:nth-child(7n+8) {
    transform: rotate(360deg)
}

#loader .dot:nth-child(7n+8)::before {
    animation: 2s linear 0.9s normal none infinite running load;
    background: #800080 none repeat scroll 0 0
}

#loader .lading {
    background-position: 50% 50%;
    background-repeat: no-repeat;
    bottom: -40px;
    height: 20px;
    left: 0;
    position: absolute;
    right: 0;
    width: 180px
}

@keyframes load {
    100% {
        opacity: 0;
        transform: scale(1)
    }
}

@keyframes load {
    100% {
        opacity: 0;
        transform: scale(1)
    }
}
RUN
add comment
Suggest a different solution or add another example