CSS Glitch effect
Glitch efekt v čistom css
GL!TCH
EFFECTindex.html
<div class="rdev-glitch-wrapper">
<h1 class="rdev-glitch" data-text="GL!TCH">GL!TCH</h1>
<span class="rdev-glitch-sub">EFFECT</span>
</div>
styles.css
.rdev-glitch-wrapper {
min-height: 300px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
}
.rdev-glitch-sub {
color: #ff4a54;
letter-spacing: 1em;
text-transform: uppercase;
font-weight: bold;
font-family: sans-serif;
font-size: 1.2rem;
}
.rdev-glitch {
position: relative;
color: #fff;
font-size: 4rem;
letter-spacing: 0.1em;
font-family: sans-serif;
text-transform: uppercase;
animation: rdev-glitch-skew 1s infinite linear alternate-reverse;
}
.rdev-glitch::before,
.rdev-glitch::after {
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
width: 100%;
color: #fff;
background: transparent;
}
.rdev-glitch::before {
left: 2px;
text-shadow: -2px 0 #ff00c1;
animation: rdev-glitch-anim 2s infinite linear alternate-reverse;
}
.rdev-glitch::after {
left: -2px;
text-shadow: -2px 0 #00fff9, 2px 2px #00fff9;
animation: rdev-glitch-anim2 2s infinite linear alternate-reverse;
}
@keyframes rdev-glitch-anim {
0% { clip: rect(0, 9999px, 0, 0); }
10% { clip: rect(10px, 9999px, 30px, 0); }
20% { clip: rect(50px, 9999px, 80px, 0); }
30% { clip: rect(30px, 9999px, 60px, 0); }
40% { clip: rect(0, 9999px, 40px, 0); }
100% { clip: rect(0, 9999px, 0, 0); }
}
@keyframes rdev-glitch-anim2 {
0% { clip: rect(20px, 9999px, 60px, 0); }
10% { clip: rect(40px, 9999px, 70px, 0); }
20% { clip: rect(10px, 9999px, 30px, 0); }
30% { clip: rect(60px, 9999px, 90px, 0); }
40% { clip: rect(30px, 9999px, 50px, 0); }
100% { clip: rect(0, 9999px, 0, 0); }
}
@keyframes rdev-glitch-skew {
0% { transform: skew(0deg); }
20% { transform: skew(5deg); }
40% { transform: skew(-5deg); }
60% { transform: skew(3deg); }
80% { transform: skew(-3deg); }
100% { transform: skew(0deg); }
}