reactbits-mcp-server
Version:
MCP Server for React Bits - Access 99+ React components with animations, backgrounds, and UI elements
79 lines (73 loc) • 2.27 kB
CSS
.glitch {
color: #fff;
font-size: clamp(2rem, 10vw, 8rem);
white-space: nowrap;
font-weight: 900;
position: relative;
margin: 0 auto;
user-select: none;
cursor: pointer;
}
.glitch::after,
.glitch::before {
content: attr(data-text);
position: absolute;
top: 0;
color: #fff;
background-color: #060010;
overflow: hidden;
clip-path: inset(0 0 0 0);
}
.glitch:not(.enable-on-hover)::after {
left: 10px;
text-shadow: var(--after-shadow, -10px 0 red);
animation: animate-glitch var(--after-duration, 3s) infinite linear alternate-reverse;
}
.glitch:not(.enable-on-hover)::before {
left: -10px;
text-shadow: var(--before-shadow, 10px 0 cyan);
animation: animate-glitch var(--before-duration, 2s) infinite linear alternate-reverse;
}
.glitch.enable-on-hover::after,
.glitch.enable-on-hover::before {
content: '';
opacity: 0;
animation: none;
}
.glitch.enable-on-hover:hover::after {
content: attr(data-text);
opacity: 1;
left: 10px;
text-shadow: var(--after-shadow, -10px 0 red);
animation: animate-glitch var(--after-duration, 3s) infinite linear alternate-reverse;
}
.glitch.enable-on-hover:hover::before {
content: attr(data-text);
opacity: 1;
left: -10px;
text-shadow: var(--before-shadow, 10px 0 cyan);
animation: animate-glitch var(--before-duration, 2s) infinite linear alternate-reverse;
}
@keyframes animate-glitch {
0% { clip-path: inset(20% 0 50% 0); }
5% { clip-path: inset(10% 0 60% 0); }
10% { clip-path: inset(15% 0 55% 0); }
15% { clip-path: inset(25% 0 35% 0); }
20% { clip-path: inset(30% 0 40% 0); }
25% { clip-path: inset(40% 0 20% 0); }
30% { clip-path: inset(10% 0 60% 0); }
35% { clip-path: inset(15% 0 55% 0); }
40% { clip-path: inset(25% 0 35% 0); }
45% { clip-path: inset(30% 0 40% 0); }
50% { clip-path: inset(20% 0 50% 0); }
55% { clip-path: inset(10% 0 60% 0); }
60% { clip-path: inset(15% 0 55% 0); }
65% { clip-path: inset(25% 0 35% 0); }
70% { clip-path: inset(30% 0 40% 0); }
75% { clip-path: inset(40% 0 20% 0); }
80% { clip-path: inset(20% 0 50% 0); }
85% { clip-path: inset(10% 0 60% 0); }
90% { clip-path: inset(15% 0 55% 0); }
95% { clip-path: inset(25% 0 35% 0); }
100% { clip-path: inset(30% 0 40% 0); }
}