Implementation Code
/* CSS */
.square-loader {
width: 50px;
height: 50px;
background: #ff6b6b;
animation: squareGrow 2s infinite;
}
@keyframes squareGrow {
0% { transform: scale(1) rotate(0deg); }
50% { transform: scale(1.5) rotate(180deg); }
100% { transform: scale(1) rotate(360deg); }
}
/* CSS */
.dots-loader {
display: flex;
gap: 8px;
}
.dot {
width: 20px;
height: 20px;
background: #4ecdc4;
border-radius: 50%;
animation: jumpAndHide 1.5s infinite;
}
.dot:nth-child(2) { animation-delay: 0.2s; }
.dot:nth-child(3) { animation-delay: 0.4s; }
@keyframes jumpAndHide {
0%, 100% { transform: translateY(0); opacity: 1; }
50% { transform: translateY(-20px); opacity: 0.3; }
}
/* CSS */
.dramatic-spinner {
width: 60px;
height: 60px;
border: 8px solid #2a2a2a;
border-top: 8px solid #ff6b6b;
border-radius: 50%;
animation: dramaticSpin 3s cubic-bezier(0.68, -0.55, 0.265, 1.55) infinite;
}
@keyframes dramaticSpin {
0% { transform: rotate(0deg); }
50% { transform: rotate(720deg); }
100% { transform: rotate(1080deg); }
}
/* CSS */
.procrastinator {
width: 100px;
height: 20px;
background: #333;
border-radius: 10px;
overflow: hidden;
position: relative;
}
.progress {
width: 30%;
height: 100%;
background: #4ecdc4;
animation: procrastinate 4s infinite;
}
@keyframes procrastinate {
0% { transform: translateX(-100%); }
30% { transform: translateX(200%); }
30.1% { transform: translateX(-100%); }
100% { transform: translateX(-100%); }
}
/* CSS */
.chaos-loader {
width: 40px;
height: 40px;
position: relative;
}
.chaos-particle {
position: absolute;
width: 10px;
height: 10px;
background: #ff6b6b;
border-radius: 50%;
animation: chaos 2s infinite;
}
.chaos-particle:nth-child(2) {
animation-delay: 0.4s;
background: #4ecdc4;
}
.chaos-particle:nth-child(3) {
animation-delay: 0.8s;
background: #ffbe0b;
}
@keyframes chaos {
0%, 100% { transform: translate(0, 0); }
25% { transform: translate(30px, -30px); }
50% { transform: translate(-30px, 30px); }
75% { transform: translate(30px, 30px); }
}
/* CSS */
.nervous-rect {
width: 60px;
height: 30px;
background: #ffbe0b;
animation: nervous 0.5s infinite;
}
@keyframes nervous {
0%, 100% { transform: skew(0deg); }
25% { transform: skew(15deg); }
75% { transform: skew(-15deg); }
}
/* CSS */
.color-shifter {
width: 50px;
height: 50px;
border-radius: 50%;
animation: colorShift 3s infinite;
}
@keyframes colorShift {
0% { background: #ff6b6b; transform: scale(1); }
33% { background: #4ecdc4; transform: scale(1.2); }
66% { background: #ffbe0b; transform: scale(0.8); }
100% { background: #ff6b6b; transform: scale(1); }
}
/* CSS */
.pulse-ring {
width: 50px;
height: 50px;
border-radius: 50%;
position: relative;
}
.pulse-ring::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
border: 3px solid #4ecdc4;
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { transform: scale(0.5); opacity: 1; }
100% { transform: scale(2); opacity: 0; }
}
/* CSS */
.dna-loader {
height: 60px;
display: flex;
align-items: center;
gap: 5px;
}
.dna-strand {
width: 4px;
height: 20px;
background: #4ecdc4;
border-radius: 2px;
animation: dnaMove 1.5s ease-in-out infinite;
}
.dna-strand:nth-child(even) {
animation-delay: 0.75s;
background: #ff6b6b;
}
@keyframes dnaMove {
0%, 100% { height: 20px; }
50% { height: 50px; }
}
/* CSS */
.infinity-loader {
width: 60px;
height: 30px;
position: relative;
}
.infinity-loader::before,
.infinity-loader::after {
content: '';
position: absolute;
width: 20px;
height: 20px;
border: 3px solid #ff6b6b;
border-radius: 50%;
animation: infinity 2s linear infinite;
}
.infinity-loader::after {
left: 30px;
animation-delay: 1s;
}
@keyframes infinity {
0% { transform: translateX(0); }
25% { transform: translateX(15px); }
50% { transform: translateX(30px); }
75% { transform: translateX(15px); }
100% { transform: translateX(0); }
}
/* CSS */
.matrix-loader {
width: 60px;
height: 60px;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 4px;
}
.matrix-cell {
background: #4ecdc4;
opacity: 0.2;
animation: matrixFade 2s infinite;
}
@keyframes matrixFade {
0%, 100% { opacity: 0.2; }
50% { opacity: 1; }
}
Loading...
/* CSS */
.typewriter {
width: 80px;
height: 20px;
border-right: 3px solid #ff6b6b;
animation: typing 1s steps(3, end) infinite;
overflow: hidden;
white-space: nowrap;
}
@keyframes typing {
0% { width: 0; }
50% { width: 80px; }
100% { width: 0; }
}
/* CSS */
.ripple-loader {
width: 50px;
height: 50px;
position: relative;
}
.ripple-loader div {
position: absolute;
border: 4px solid #4ecdc4;
border-radius: 50%;
animation: ripple 1.5s ease-out infinite;
opacity: 0;
}
.ripple-loader div:nth-child(2) {
animation-delay: 0.5s;
}
.ripple-loader div:nth-child(3) {
animation-delay: 1s;
}
@keyframes ripple {
0% {
width: 0;
height: 0;
opacity: 1;
}
100% {
width: 100%;
height: 100%;
opacity: 0;
}
}
/* CSS */
.tetris-loader {
width: 40px;
height: 40px;
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 2px;
animation: tetris 2s infinite;
}
.tetris-block {
background: #ff6b6b;
transform-origin: center;
}
@keyframes tetris {
0%, 100% { transform: rotate(0deg); }
25% { transform: rotate(90deg); }
50% { transform: rotate(180deg); }
75% { transform: rotate(270deg); }
}
/* CSS */
.heartbeat-loader {
width: 40px;
height: 40px;
background: #ff6b6b;
position: relative;
transform: rotate(45deg);
}
.heartbeat-loader::before,
.heartbeat-loader::after {
content: '';
width: 40px;
height: 40px;
background: #ff6b6b;
border-radius: 50%;
position: absolute;
}
.heartbeat-loader::before {
left: -20px;
}
.heartbeat-loader::after {
top: -20px;
}
.heartbeat-loader,
.heartbeat-loader::before,
.heartbeat-loader::after {
animation: heartbeat 1.5s ease infinite;
}
@keyframes heartbeat {
0% { transform: scale(0.8); }
5% { transform: scale(0.9); }
10% { transform: scale(0.8); }
15% { transform: scale(1); }
50% { transform: scale(0.8); }
100% { transform: scale(0.8); }
}