3D Wave Loader

HTML
<div class="wrapper"> <div class='block'> <div class='inner'></div> </div> <div class='block'> <div class='inner'></div> </div> <div class='block'> <div class='inner'></div> </div> <div class='block'> <div class='inner'></div> </div> <div class='block'> <div class='inner'></div> </div> <div class='block'> <div class='inner'></div> </div> <div class='block'> <div class='inner'></div> </div> <div class='block'> <div class='inner'></div> </div> </div>
CSS
html, body { height: 100%; width: 100%; display: flex; justify-content: center; align-items: center; overflow: hidden; background: #000; } .wrapper { transform: rotate(90deg); } div, :before, :after { position: absolute; transform-style: preserve-3d; background: currentColor; } .block { top: 50%; left: 50%; transform: rotateX(-35deg) rotateY(-45deg); } .block:nth-child(1) { margin-left: -15.3125em; color: #f90cae; } .block:nth-child(1) .inner { animation-delay: 0s; } .block:nth-child(2) { margin-left: -10.9375em; color: #d50cae; } .block:nth-child(2) .inner { animation-delay: -0.1875s; } .block:nth-child(3) { margin-left: -6.5625em; color: #b20cae; } .block:nth-child(3) .inner { animation-delay: -0.375s; } .block:nth-child(4) { margin-left: -2.1875em; color: #8e0cae; } .block:nth-child(4) .inner { animation-delay: -0.5625s; } .block:nth-child(5) { margin-left: 2.1875em; color: #6b0cae; } .block:nth-child(5) .inner { animation-delay: -0.75s; } .block:nth-child(6) { margin-left: 6.5625em; color: #470cae; } .block:nth-child(6) .inner { animation-delay: -0.9375s; } .block:nth-child(7) { margin-left: 10.9375em; color: #240cae; } .block:nth-child(7) .inner { animation-delay: -1.125s; } .block:nth-child(8) { margin-left: 15.3125em; color: #000cae; } .block:nth-child(8) .inner { animation-delay: -1.3125s; } .inner { animation: s 1s ease-in-out infinite alternate; } .inner, .inner:before, .inner:after { width: 1.75em; height: 1.75em; content: ""; } .inner:before { transform: rotateY(90deg) translate3d(0.875em, 0, 0.875em); filter: brightness(1.3); } .inner:after { transform: rotateX(90deg) translate3d(0, -0.875em, 0.875em); filter: brightness(1.6); } @keyframes s { to { transform: scaleY(8); } }
JAVASCRIPT
Expand for more options Login