Two Minimal Loaders - Pure CSS

HTML
<div class="first-wrapper"> <div class="square-loader"> <div class="square first_square"></div> <div class="square second_square"></div> <div class="square third_square"></div> </div> </div> <div class="second-wrapper"> <div class="circle-loader"> <div class="circle circle_four"></div> <div class="circle circle_three"></div> <div class="circle circle_two"></div> <div class="circle circle_one"></div> </div> </div>
CSS
html, body { width: 100%; height: 100%; margin: 0px; padding: 0px; overflow: hidden; display: flex; } div[class*=wrapper] { height: 100%; width: 50%; display: flex; justify-content: center; align-items: center; } div[class*=loader] { position: relative; width: 200px; height: 200px; } /* ======================= Square Preloader ======================= */ .first-wrapper { background-color: #0EB1D2; } .square { width: 50px; height: 50px; background-color: rgba(255,255,255,0); margin-right: auto; margin-left: auto; border: 2px solid #fff; left: 73px; top: 73px; position: absolute; } .square-loader { transform: rotate(45deg); } .first_square { animation: first_square_animate 1s infinite ease-in-out; } .second_square { animation: second_square 1s forwards, second_square_animate 1s infinite ease-in-out; } .third_square { animation: third_square 1s forwards, third_square_animate 1s infinite ease-in-out; } @keyframes second_square { 100% { width: 100px; height:100px; left: 48px; top: 48px; } } @keyframes third_square { 100% { width: 150px; height:150px; left: 23px; top: 23px;} } @keyframes first_square_animate { 0% { transform: perspective(100px) rotateX(0deg) rotateY(0deg);} 50% { transform: perspective(100px) rotateX(-180deg) rotateY(0deg); } 100% { transform: perspective(100px) rotateX(-180deg) rotateY(-180deg); } } @keyframes second_square_animate { 0% { transform: perspective(200px) rotateX(0deg) rotateY(0deg); } 50% { transform: perspective(200px) rotateX(180deg) rotateY(0deg); } 100% { transform: perspective(200px) rotateX(180deg) rotateY(180deg); } } @keyframes third_square_animate { 0% { transform: perspective(300px) rotateX(0deg) rotateY(0deg); } 50% { transform: perspective(300px) rotateX(-180deg) rotateY(0deg); } 100% { transform: perspective(300px) rotateX(-180deg) rotateY(-180deg); } } /* ======================= Circle Preloader ======================= */ .second-wrapper { background-color: #17607d; } .circle-loader { position: relative; } .circle { border-radius: 50% 50% 50% 50%; position: absolute; border-top: 2px solid #fff; border-bottom: 2px solid transparent; border-left: 2px solid #fff; border-right: 2px solid transparent; animation: animate 2s infinite; } .circle_one { left: 75px; top: 75px; width: 50px; height: 50px; } .circle_two { left: 65px; top: 65px; width: 70px; height: 70px; animation-delay: 0.2s; } .circle_three { left: 55px; top: 55px; width: 90px; height: 90px; animation-delay: 0.4s; } .circle_four { left: 45px; top: 45px; width: 110px; height: 110px; animation-delay: 0.6s; } @keyframes animate { 50% { transform: rotate(360deg) scale(0.8); } }
JAVASCRIPT
Expand for more options Login