글리치

Glitch

화면이 순간적으로 깨진 것처럼 텍스트나 이미지 조각이 어긋나고 색이 갈라지는 연출.

다른 이름: Digital glitchDatamosh text
···
html
<div class="g" id="g" data-text="GLITCH">GLITCH</div>
css
.g{position:relative;font-size:clamp(32px,8vmin,46px);font-weight:800;color:#fff;letter-spacing:.04em}
.g::before,.g::after{content:attr(data-text);position:absolute;inset:0;mix-blend-mode:screen;opacity:0}
.g::before{color:#ff2d55}
.g::after{color:#22d3ee}
.g.burst::before{opacity:1;animation:gb .32s steps(6) 1}
.g.burst::after{opacity:1;animation:gb2 .32s steps(6) 1}
@keyframes gb{
  0%{clip-path:inset(10% 0 70% 0);transform:translate(-6px,0)}
  30%{clip-path:inset(60% 0 10% 0);transform:translate(5px,0)}
  60%{clip-path:inset(20% 0 50% 0);transform:translate(-3px,0)}
  100%{clip-path:inset(0 0 0 0);transform:translate(0,0)}}
@keyframes gb2{
  0%{clip-path:inset(70% 0 5% 0);transform:translate(6px,0)}
  40%{clip-path:inset(5% 0 60% 0);transform:translate(-4px,0)}
  100%{clip-path:inset(0 0 0 0);transform:translate(0,0)}}
js
const g = document.getElementById('g');
function burst() {
  g.classList.add('burst');
  setTimeout(() => g.classList.remove('burst'), 320);
  setTimeout(burst, 1600 + Math.random() * 1400);
}
burst();

clip-path 로 요소를 여러 수평 띠로 자른 뒤, 각 띠를 짧게 좌우로 튀게 하고 색수차(빨강/파랑 어긋남)를 곁들이면 디지털 오류처럼 보입니다. steps() 이징으로 움직임을 딱딱 끊기게 만드는 게 핵심입니다.

무작위성이 생명이라 CSS keyframe 만으로는 매번 같은 패턴이 반복됩니다 — 실무에서는 JS 로 간격·오프셋을 무작위화하거나 애니메이션 지연을 여러 개 무작위로 겹칩니다.

언제 쓰나

에러 상태, 사이버펑크/Y2K 무드, 짧은 인트로 트랜지션에 씁니다. 광과민성 발작을 유발할 수 있어 빈도·강도를 낮게 유지하고 반복 노출을 피하세요.