키네틱 타이포그래피

Kinetic typography

글자 하나하나가 움직임으로 리듬·감정을 전달하는 타이포그래피. 자막·타이틀 시퀀스·로딩 화면에 흔히 씁니다.

다른 이름: 움직이는 텍스트Motion typography
···
html
<div class="stage"><div class="line" id="line"></div></div>
css
.line{display:flex;flex-wrap:wrap;justify-content:center;font:800 7vmin/1.3 system-ui,-apple-system,"Apple SD Gothic Neo",sans-serif;color:var(--fg);max-width:92%}
.line .word{display:inline-flex}
.line .sp{width:.3em;flex:none}
.line .ch{display:inline-block;animation:bounce 1.8s ease-in-out infinite}
@keyframes bounce{0%,100%{transform:translateY(0);opacity:.35}50%{transform:translateY(-.28em);opacity:1}}
js
const words = ['MOVE', '움직임'];
const line = document.getElementById('line');
let globalIndex = 0;
words.forEach(function(word, wi){
  if (wi > 0) {
    const sp = document.createElement('span');
    sp.className = 'sp';
    line.appendChild(sp);
  }
  const group = document.createElement('span');
  group.className = 'word';
  [...word].forEach(function(ch){
    const s = document.createElement('span');
    s.className = 'ch';
    s.textContent = ch;
    s.style.animationDelay = (globalIndex * 0.08) + 's';
    group.appendChild(s);
    globalIndex++;
  });
  line.appendChild(group);
});

1950~60년대 영화 타이틀 디자이너 솔 바스(Saul Bass)의 작업이 원류로 꼽히며, 이후 뮤직비디오·광고·모션그래픽 전반으로 퍼졌습니다. 핵심은 "글자 단위 스태거(stagger)"입니다 — 단어 전체가 동시에 움직이는 대신, 글자마다 지연(delay)을 살짝 다르게 줘서 파도치듯 움직이게 합니다.

웹에서는 텍스트를 글자 단위 `<span>`으로 쪼갠 뒤 각각 `animation-delay`를 인덱스에 비례하게 주는 방식이 가장 흔합니다. CSS만으로도 가능하지만, 스크롤 위치나 사용자 입력에 반응시키려면 JS로 진행률을 계산해 각 글자의 transform을 갱신합니다.

과하게 쓰면 정작 읽어야 할 메시지가 산만해지니, 짧은 헤드라인·로딩 상태·강조 문구처럼 "읽기"보다 "보기"의 비중이 큰 곳에 씁니다.

언제 쓰나

짧은 히어로 헤드라인, 로딩·완료 상태 메시지, 강조 문구에. 긴 본문 문단에는 쓰지 마세요.