.loader { position: absolute; top: 0; left: 0; height: 100%; width: 100%; } .loader-inner { transform: translateY(-50%); top: 50%; position: absolute; width: 100%; color: white; padding: 0 100px; text-align: center; } .loader-inner label { opacity: 0; display: inline-block; margin: 0 4px; } @keyframes loaderDot { 0% { opacity: 0; transform: translateX(-300px); } 33% { opacity: 1; transform: translateX(0px); } 66% { opacity: 1; transform: translateX(0px); } 100% { opacity: 0; transform: translateX(300px); } } .loader-inner label:nth-child(6) { -webkit-animation: loaderDot 3s infinite ease-in-out; animation: loaderDot 3s infinite ease-in-out; } .loader-inner label:nth-child(5) { -webkit-animation: loaderDot 3s 100ms infinite ease-in-out; animation: loaderDot 3s 100ms infinite ease-in-out; } .loader-inner label:nth-child(4) { -webkit-animation: loaderDot 3s 200ms infinite ease-in-out; animation: loaderDot 3s 200ms infinite ease-in-out; } .loader-inner label:nth-child(3) { -webkit-animation: loaderDot 3s 300ms infinite ease-in-out; animation: loaderDot 3s 300ms infinite ease-in-out; } .loader-inner label:nth-child(2) { -webkit-animation: loaderDot 3s 400ms infinite ease-in-out; animation: loaderDot 3s 400ms infinite ease-in-out; } .loader-inner label:nth-child(1) { -webkit-animation: loaderDot 3s 500ms infinite ease-in-out; animation: loaderDot 3s 500ms infinite ease-in-out; } .bubble-loader { position: relative; margin-top: 8px; height: 32px; @apply bg-secondary; border-radius: 20px; width: 56px; display: inline-flex; justify-content: center; align-items: center; } .bubble-loader span { width: 8px; height: 8px; border-radius: 50%; display: inline-block; position: absolute; left: 50%; margin-left: -4px; animation: 3s infinite linear; } .bubble-loader span:nth-child(1) { @apply bg-secondary-foreground/50; animation: DotLeft 1.5s infinite linear; } .bubble-loader span:nth-child(2) { @apply bg-secondary-foreground/50; z-index: 100; } .bubble-loader span:nth-child(3) { @apply bg-secondary-foreground/50; animation: DotRight 1.5s infinite linear; } @keyframes DotRight { 0% { -webkit-transform: translateX(14px); } 50% { -webkit-transform: translateX(-14px); } 100% { -webkit-transform: translateX(14px); z-index: 200; } } @keyframes DotLeft { 0% { -webkit-transform: translateX(-14px); z-index: 200; } 50% { -webkit-transform: translateX(14px); } 100% { -webkit-transform: translateX(-14px); } }